我很努力地理解爲什麼下面的正則表達式不工作。我的要求如下。正則表達式匹配非前面的字符和匹配後面的字符
匹配沒有跟隨的「配置」。 (期)。對於那些匹配的,「配置」不應該在*之前。此外,這應該是函數參數意味着它應該介於(和)之間。以下是我的,並沒有給我正確的價值觀。這是用Java編寫的。
String condition1 = "config.property == function(/*config ConfigCon */config,\"\")";
String condition2 = "config.property == function(/*config ConfigCon */config.prop1,\"\")";
String key = "config";
String matchString = "\\(.*(?<!\\*)" + key + "(?!\\.).*\\)";
System.out.println(matchString);
Pattern p = Pattern.compile(matchString);
Matcher m = p.matcher(condition1);
//The below should say true;
boolean cond = m.find();
//The below should say false;
m = p.matcher(condition2);
cond = m.find();
我的邏輯是先從逃脫(後跟一個或多個字符,爲逃脫的*隨後鍵,然後按負先行的esscaped。隨後一個或多個字符,然後逃脫負回顧後)。我在這裏錯過了什麼。
感謝您的回覆。我也需要他們之間的派生。正如我上面提到的,我擁有正確的正則表達式,但是在導致問題的條件1中存在拼寫錯誤。 – Karthik
@Karthik所以你解決了這個問題或者它尚未解決? – SachinSarawgi
如果你想包括圓括號也使用'(\\(。*(?<!\\ *)「+ key +」(?!\\。)。* \\))' – SachinSarawgi