Вот пример рабочего регулярного выражения: https://regex101.com/r/wO3yP2/2
Здесь я пытаюсь найти, нет ли недействительного или сбоя в xml.
Вот шаблон /^((?!INVALID|FAIL).)*$/i
Вот класс Java, пытающийся сделать то же самое, но не могу найти совпадение.
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?
Pattern.compile("^(?!.*?\b(INVALID|FAIL)\b).*$", Pattern.CASE_INSENSITIVE)
Оно соответствует строкам, содержащим недействительные и ошибочные. - person Dhwanit   schedule 01.05.2015^(?!.*?(INVALID|FAIL)).*$
. Я читаю этот шаблон так: --› для любого символа смотреть вперед и терпеть неудачу, если есть недействительный или сбой, которому предшествует ноль или много символов. Однако это не имеет для меня смысла, потому что вот мой более ранний шаблон^((?!INVALID|FAIL).)*$
, который при чтении означает, что для каждого символа (включая пустую строку) происходит сбой, если INVALID или Fail найдены где-либо в строке - person Dhwanit   schedule 01.05.2015