我正在尝试匹配一些包含不匹配字符串的 Java 代码。例如,我有以下要匹配的代码块:
protected String methodName(String args[]) {
final String METHOD = "wrongMethodName";
...
}
下面的代码块我不想匹配
protected String methodName(String args[]) {
final String METHOD = "methodName";
...
}
现在,我有以下(不起作用)正则表达式,需要启用 DOTALL:
(\w+?)\(.*?\) ?{.*?METHOD *= *".*?";
如果我尝试使用捕获组进行负向后查找,则正则表达式不会编译,因为事先不知道向后查找的大小。
java.util.regex.PatternSyntaxException:
Look-behind group does not have an obvious maximum length near index 39
有没有办法可以使用此正则表达式中的捕获组来表示我想要匹配与捕获组不匹配的字符串?
最佳答案
我认为您可以使用否定前瞻(如果我正确理解您的问题),请尝试:
(\b\w+?\b)\(.*?\) ?{.*?METHOD *= *"(?!\1).*?"
我还在第一组中使用了单词边界,否则它只是从第二个字母开始匹配。
关于java - 不匹配子字符串的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8416550/