我有一系列必须编译的模式的问题.这是一个例子:
...(?<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)