我很努力地理解为什么下面的正则表达式不工作。我的要求如下。正则表达式匹配非前面的字符和匹配后面的字符
匹配没有跟随的“配置”。 (期)。对于那些匹配的,“配置”不应该在*之前。此外,这应该是函数参数意味着它应该介于(和)之间。以下是我的,并没有给我正确的价值观。这是用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