我想要一些正则表达式的帮助。基本上,我在寻找一个能匹配任何东西的东西,但不能包含关键词。
Regex应该匹配任何不包含"bar"的内容
String i1 = "foo";
String i2 = "foo bar";
String i3 = "bar foo";
Pattern p = Pattern.compile(".*\(!(bar)\).*");
Matcher matcher = p.matcher(i1);
System.out.println(matcher.matches()); // false, should be true
matcher = p.matcher(i2);
System.out.println(matcher.matches()); // false
matcher = p.matcher(i3);
System.out.println(matcher.matches()); // false
如何更改regex以正确地进行包含检查?
^(?:(?!bar).)*$
这正是你想要的,除非我弄错了。
你不能只匹配你的关键字并否定匹配吗?如:
String i1 = "foo";
Pattern p = Pattern.compile(".*\((bar)\).*");
Matcher matcher = p.matcher(i1);
System.out.println(!matcher.matches());
否则,我会查看先行/后向运算符。。。