input1="caused/VBN by/IN thyroid disorder"
要求:找字"caused"
后跟斜杠后跟任意数量的大写字母的 - 而不是后跟空格+ "by/IN
。排除模式正则表达式不工作
在上面的例子中,"caused/VBN"
后面跟着" by/IN"
,所以'引起'不应该匹配。
input2="caused/VBN thyroid disorder"
"by/IN"
不遵循造成的,所以应该匹配
regex="caused/[A-Z]+(?![\\s]+by/IN)"
caused/[A-Z]+
- 字 '引发' +/+一个或多个大写字母
(?![\\s]+by)
- 负前瞻 - 不匹配空间和
下面是一个简单的方法,我用来测试
public static void main(String[] args){
String input = "caused/VBN by/IN thyroid disorder";
String regex = "caused/[A-Z]+(?![\\s]+by/IN)";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
while(matcher.find()){
System.out.println(matcher.group());
}
输出:caused/VB
我不明白为什么我负超前的正则表达式是行不通的。
'\\ s'周围的括号是不必要的,不是? – 2011-03-23 22:57:19
是的,他们完全没有必要。 – 2011-03-23 23:18:18
+1 - 请注意,所有格加也可以做到这一点:'由/导致/ [A-Z] ++(?![\ s] +)。 – ridgerunner 2011-03-24 01:28:34