【问题标题】:How to include named capture groups in java regex? [duplicate]java - 如何在java正则表达式中包含命名捕获组? [复制]
【发布时间】:2011-02-28 17:35:40
【问题描述】:

我是 Java 正则表达式的新手,我不知道如何在表达式中包含命名的捕获组。我正在为Confluence's Universal Wiki Converter 编写一个ScrewTurn 图像转换器。这就是我所拥有的:

String image = "\\[image(?<align>auto)?\\|\\|{UP\\(((?<namespace>\\w+)\\.)?(?<pagename>[\\w-]+)\\)}(?<filename>[\\w- ]+\\.[\\w]+)\\]";

Pattern imagePattern = Pattern.compile(image, Pattern.CASE_INSENSITIVE);

它在Pattern.comiple() 中抛出这个异常:

java.util.regex.PatternSyntaxException: Unknown look-behind group near index 19
\[image(?<align>auto)?\|\|{UP\(((?<namespace>\w+)\.)?(?<pagename>[\w-]+)\)}(?<filename>[\w- ]+\.[\w]+)\]
                   ^

我以前在 C# (?&lt;namedgroup&gt;asdf) 中使用过这样的命名捕获组,但在 Java 中没有。我错过了什么?

【问题讨论】:

    标签: java regex


    【解决方案1】:

    Java 不支持命名捕获。

    来源:Are Java and C# regular expressions compatible?

    【讨论】:

    【解决方案2】:

    Java 似乎只会在版本 7 中开始支持命名捕获组:Matcher (SE 6)Matcher (SE 7)

    另见:http://java.sun.com/javase/7/docs/api/java/util/regex/Pattern.html#groupname

    【讨论】:

      猜你喜欢
      • 2011-10-19
      • 2019-01-18
      • 2013-07-31
      • 1970-01-01
      • 2014-08-17
      • 1970-01-01
      • 1970-01-01
      • 2010-09-29
      相关资源
      最近更新 更多