在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)).)* .*"))
答案 0 :(得分:1)
如果您尝试逐行进行此匹配,则以下模式应该有效:
^(?=.*\bgood foo\b)(?!.*\bgood koo\b).*$
这使用正向和负向先行来断言good foo
出现在行中的某个位置,而good koo
却没有出现 同一行。然后,它接受出现在该行中的任何其他内容。
请注意,我在\b
和good foo
周围放置了词边界good koo
,以确保例如该模式不会给good food
带来错误的标志匹配。 / p>