开发者

How to include named capture groups in java regex? [duplicate]

This question already has answers here: Regex Named Groups in Java (6 answers) Closed 5 years ago.

I'm new to regex in Java and I can't figure out how to include named capture groups in an expression. I'm writing a ScrewTurn Image Converter for Confluence's Universal Wiki Converter. This is what I have:

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

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

It's throwing this exception in Pattern.comiple():

java.util.regex.PatternSynt开发者_如何学JAVAaxException: Unknown look-behind group near index 19
\[image(?<align>auto)?\|\|{UP\(((?<namespace>\w+)\.)?(?<pagename>[\w-]+)\)}(?<filename>[\w- ]+\.[\w]+)\]
                   ^

I've used named capture groups like this before in C# (?<namedgroup>asdf), but not in Java. What am I missing?


Java doesn't support named captures.

Source: Are Java and C# regular expressions compatible?


It appears Java will only start supporting named capturing groups in version 7: Matcher (SE 6) vs Matcher (SE 7)

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

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜