Java 不匹配子字符串的正则表达式
我正在尝试匹配一些Java代码,其中包含不匹配的字符串。例如,我想匹配以下代码块:Java 不匹配子字符串的正则表达式,java,regex,Java,Regex,我正在尝试匹配一些Java代码,其中包含不匹配的字符串。例如,我想匹配以下代码块: protected String methodName(String args[]) { final String METHOD = "wrongMethodName"; ... } 下面的代码块我不想匹配 protected String methodName(String args[]) { final String METHOD = "methodName"; ...
protected String methodName(String args[]) {
final String METHOD = "wrongMethodName";
...
}
下面的代码块我不想匹配
protected String methodName(String args[]) {
final String METHOD = "methodName";
...
}
现在,我有以下(不工作)正则表达式,需要启用DOTALL:
(\w+?)\(.*?\) ?{.*?METHOD *= *".*?";
如果我尝试对捕获组使用负lookbehind,则正则表达式不会编译,因为lookbehind的大小在之前是未知的
java.util.regex.PatternSyntaxException:
Look-behind group does not have an obvious maximum length near index 39
是否有一种方法可以使用此正则表达式中的捕获组来表示我希望匹配与捕获组不匹配的字符串?我认为您可以使用负前瞻(如果我正确理解了您的问题),请尝试: 看到了吗 我还在第一组中使用了单词边界,否则它只会在第二个字母处开始匹配。为什么不直接匹配
“final String METHOD=\\”\\p{L}*\\”;“
你能更具体地匹配什么吗。您知道什么是错误和正确的方法名字符串吗?
(\b\w+?\b)\(.*?\) ?{.*?METHOD *= *"(?!\1).*?"