2011-12-07 74 views
1

我想匹配一些Java代碼中有不匹配的字符串。例如,我有下面的代碼塊,我想匹配:Regex for mismatched substrings

protected String methodName(String args[]) { 

    final String METHOD = "wrongMethodName"; 
    ... 

} 

而下面的代碼塊我想匹配

protected String methodName(String args[]) { 

    final String METHOD = "methodName"; 
    ... 

} 

現在,我有以下(不工作)的正則表達式,這需要DOTALL啓用:

(\w+?)\(.*?\) ?{.*?METHOD *= *".*?"; 

如果我嘗試用捕獲組後面負的樣子,正則表達式不COMP因爲背後的大小在手之前是未知的。

java.util.regex.PatternSyntaxException: 
    Look-behind group does not have an obvious maximum length near index 39 

有沒有一種方法,我可以使用捕捉組在此正則表達式說我想匹配沒有捕獲組相匹配的字符串?

+0

爲什麼不匹配'「最後一個字符串方法= \\」\\ p {L} * \\「;」' 您可以更具體地匹配您想要的內容。你知道錯誤和正確的方法名稱字符串是什麼嗎? –

回答

2

我想你可以使用負先行,而不是(如果我理解正確你的問題),請嘗試:

(\b\w+?\b)\(.*?\) ?{.*?METHOD *= *"(?!\1).*?" 

看到它here on Regexr

我也用字邊界在第一組中,否則只是在第二個字母開始匹配。