不包含在Reg ex中

时间:2018-12-25 13:13:04

标签: java regex

在regx中使用不包含时,我遇到了问题

 some text good foo and some text and good koo 
 good foo and some text (no indication of koo)

我喜欢过滤所有好的foo记录,但不过滤 koo 。在这种情况下,只有第二条记录。我尝试使用

.* good foo.*((?!(good koo)).)* .*

但这会标记所有带有 good foo

单词的记录
/* no indication of good koo, so expected is true) */
println("good foo and some text (no indication of koo)".matches(".*good foo.*((?!(good koo)).)* .*"))  

/* indication of good koo, so expected is false) */
println("good foo and some text good koo".matches(".*good foo.*((?!(good koo)).)* .*"))

1 个答案:

答案 0 :(得分:1)

如果您尝试逐行进行此匹配,则以下模式应该有效:

^(?=.*\bgood foo\b)(?!.*\bgood koo\b).*$

Demo

这使用正向和负向先行来断言good foo 出现在行中的某个位置,而good koo却没有出现 同一行。然后,它接受出现在该行中的任何其他内容。

请注意,我在\bgood foo周围放置了词边界good koo,以确保例如该模式不会给good food带来错误的标志匹配。 / p>