正则表达式匹配非前面的字符和匹配后面的字符
问题描述:
我很努力地理解为什么下面的正则表达式不工作。我的要求如下。正则表达式匹配非前面的字符和匹配后面的字符
匹配没有跟随的“配置”。 (期)。对于那些匹配的,“配置”不应该在*之前。此外,这应该是函数参数意味着它应该介于(和)之间。以下是我的,并没有给我正确的价值观。这是用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();
我的逻辑是先从逃脱(后跟一个或多个字符,为逃脱的*随后键,然后按负先行的e*ed。随后一个或多个字符,然后逃脱负回顾后)。我在这里错过了什么。
答
删除\\
从正则表达式开始和结束它将工作。使用正则表达式(.*(?<!\\*)" + key + "(?!\\.).*)
。
我试过这是第一次给true
,第二次给false
。
答
感谢您的回复。在条件1中我有一个错字,在那里我给了配置文件而不是配置文件。我使用的正则表达式最初是正确的,但由于错字,我必须花费很多时间进行调试!如果需要这种功能,任何人都可以使用。
感谢您的回复。我也需要他们之间的派生。正如我上面提到的,我拥有正确的正则表达式,但是在导致问题的条件1中存在拼写错误。 – Karthik
@Karthik所以你解决了这个问题或者它尚未解决? – SachinSarawgi
如果你想包括圆括号也使用'(\\(。*(? SachinSarawgi