Java正则表达式,以防止匹配特定的关键字

时间:2017-01-24 18:48:03

标签: java regex

我一直在探索消极的前瞻和消极的背后。但他们似乎没有做我想做的事。

假设我有一个句子" word1 word2 word3 word4",如果该句子中存在word3或word7,我需要一个拒绝匹配的正则表达式。换句话说,matcher.find()应为false。我该怎么做?

理想情况下,我希望捕获的句子尽可能放松.*但是如果我收紧捕获的句子我只能阻止匹配,请参阅下面的(\\w{4}\\d{1}\\s.*)部分,最后为{{1} }

//Result: Nothing

1 个答案:

答案 0 :(得分:1)

怎么样:

Pattern pattern = Pattern.compile("^(?!.*(word1|word2|word3|word4|word5|word6|word7)).*$");
Matcher matcher = patter.matcher(" word1");
System.out.println(matcher.find());

这可以根据这些词中的模式进行简化,例如:

Pattern p = Pattern.compile("^(?!.*(word[1-7])).*$");
Matcher m = p.matcher(" word8");
boolean b = m.find();