有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

正则表达式从Java中的字符串文本中提取重复模式集

提取所有“{…}”的方便可靠的方法是什么来自给定字符串的标记?(使用Java)

举个例子: 假设我有:http://www.something.com/{tag1}/path/{tag2}/else/{tag3}.html

我想得到所有的“{}”标记;我考虑过使用Java.split()函数,但不确定正确的正则表达式是什么

注意:标签可以被称为任何东西,而不仅仅是tagX


共 (1) 个答案

  1. # 1 楼答案

    我会用正则表达式来匹配这个。类似这样的东西可能适合你的表情:

    String regex = "\\{.*?\\}";
    

    因为这将“不情愿地”匹配周围有{and}的任何子字符串。.*?使它可以在{and}之间找到任何字符,但这是不情愿的,因此它与较大的字符串不匹配:

    {tag1}/path/{tag2}/else/{tag3}
    

    这将是一场“贪婪”的比赛。请注意,正则表达式中的大括号需要用双反斜杠转义,因为大括号在正则表达式中有单独的含义,如果要指示大括号字符串,则需要转义它

    例如

       public static void main(String[] args) {
          String test = "http://www.something.com/{tag1}/path/{tag2}/else/{tag3}.html";
          String regex = "\\{.*?\\}";
    
          Pattern pattern = Pattern.compile(regex);
          Matcher matcher = pattern.matcher(test);
    
          while (matcher.find()) {
             System.out.println(matcher.group());
          }
       }
    

    输出为:

    {tag1}
    {tag2}
    {tag3}
    

    您可以在此处阅读有关正则表达式的更多信息: Oracle Regular Expressions Tutorial

    欲了解更多详情,请点击此处: www.regular-expressions.info/tutorial