Java Matcher不适用于有效的pcre模式
下面是一个有效的正则表达式示例 在这里,我尝试查找xml中是否没有无效或失败 以下是模式((?!INVALID | FAIL)。*$/i 下面是java类尝试做同样的事情,但找不到匹配项Java Matcher不适用于有效的pcre模式,java,regex,regex-lookarounds,Java,Regex,Regex Lookarounds,下面是一个有效的正则表达式示例 在这里,我尝试查找xml中是否没有无效或失败 以下是模式((?!INVALID | FAIL)。*$/i 下面是java类尝试做同样的事情,但找不到匹配项 class RegexChecker { public static void main(String args[]){ String success = "this version has success in it"; String reject = "this fa
class RegexChecker {
public static void main(String args[]){
String success = "this version has success in it";
String reject = "this failure version doesnot have the s word in it";
String falsePositive = "this version is invalid but still has success in it";
Pattern pattern = Pattern.compile("^((?!INVALID|FAIL).)*$", Pattern.CASE_INSENSITIVE);
Matcher successMatcher = pattern.matcher(success);
if(successMatcher.find()){
System.out.println("Success Matches");
}
Matcher rejectMatcher = pattern.matcher(reject);
if(rejectMatcher.find()){
System.out.println("Reject Matches");
}
Matcher falsePosMatcher = pattern.matcher(falsePositive);
if(falsePosMatcher.find()){
System.out.println("PseudoSuccess Matches");
}
}
}
java正则表达式检查器与PCRE有何不同
String success = "this version has success in it";
String reject = "this failure version doesnot have the s word in it";
String falsePositive = "this version is invalid but still has success in it";
Pattern pattern = Pattern.compile("(INVALID|FAIL)", Pattern.CASE_INSENSITIVE);
Matcher successMatcher = pattern.matcher(success);
if(successMatcher.matches()==false){
System.out.println("Success Matches");
}
Matcher rejectMatcher = pattern.matcher(reject);
if(rejectMatcher.find()){
System.out.println("Reject Matches");
}
Matcher falsePosMatcher = pattern.matcher(falsePositive);
if(falsePosMatcher.find()){
System.out.println("PseudoSuccess Matches");
}
使用上述程序进行了尝试,得到了如下输出:
成功匹配
拒绝比赛
伪成功匹配
这就是您所期望的输出吗?在对代码进行了一些尝试之后(感谢Anubhava的模式),我需要阅读这里的内容
^(?。*?(无效|失败)).$
然而,我对我先前的模式有怀疑。请阅读关于我解释疑问的问题的评论。即使是您的regex101演示也没有找到任何匹配项。至于方言差异,有一个很好的概述(但您的问题不在于此)。这里是一个不包含无效或失败的字符串的匹配项—失败的字符串不应匹配—此失败版本在itI中没有s字。这在PCRE或JavaNo中表现相同。这不是输出。我正在尝试匹配不包含无效或失败的字符串。如果在注释中使用3个链接,您将看到我想要的结果。代码中的matches()也必须是find()。两者之间有一个区别,这与我向您建议的非常相似,您评论说它在Java中不起作用。