小编MrJ*_*s0n的帖子

我不能使用模式这样的"abc_def"这样的组名

我有一系列必须编译的模式的问题.这是一个例子:

...(?<NOT>\bNOT\b)|(?<LEFT_PAR>\()|(?<RIGHT_PAR>\))...
Run Code Online (Sandbox Code Playgroud)

这些组名"LEFT_PAR"和"RIGHT_PAR"引发异常:

Exception in thread "main" java.util.regex.PatternSyntaxException: 
named capturing group is missing trailing '>'
Run Code Online (Sandbox Code Playgroud)

我很确定下划线是问题所在.在线搜索我没有找到任何有用的东西,我无法理解为什么当我看到python中的示例工作得很好时,这会导致我这个问题.我已经读过它被视为Java Patterns中的普通char.显然,如果我删除它,它的效果很好.

你能帮我吗?:) 谢谢.

编辑:

 public enum Patterns(){
   NOT("\\bNOT\\b"),
   LEFT-PAR("\\("), 
   RIGHT-PAR("\\)"); [...] 
 }
 //i'm cutting enum constructor and toString() method...

//That's the part of the method that uses enum

StringBuilder allPatterns = new StringBuilder();

//This loop creates a unique group of patterns (key-value)
for (validTokens t : validTokens.values()) 
    allPatterns.append("|(?<" + t.name() + ">" + t + ")");

//Compile all Patterns and create a group
Pattern …
Run Code Online (Sandbox Code Playgroud)

java regex

4
推荐指数
1
解决办法
4383
查看次数

标签 统计

java ×1

regex ×1