正则表达式匹配任何顺序不包含多个整个单词的行

时间:2018-02-09 08:01:47

标签: java regex xcode logic

我需要使用AND在同一行上排除两个字符串。但我无法应用正确的正则表达式。请帮忙。

以下示例,我想排除' badword'和'测试'都。 测试字符串:

ghjghj badword test ghjghj
one two
abadwords
three

使用的正则表达式为^((?!badword).*.((?!test).))*$

2 个答案:

答案 0 :(得分:0)

要匹配不包含多个完整单词的行,您可以使用在开始时锚定的negative lookahead内的替换或使用多个负向前瞻,每个前瞻包含一个完整的单词匹配模式:

^(?!.*\b(?:badword|test)\b).*$

或者

^(?!.*\bbadword\b)(?!.*\btest\b).*$

请参阅regex demo。您可能需要使用多线修改器使^$匹配行的开头/结尾

<强>详情

  • ^ - 字符串/行
  • 的开头
  • (?!.*\b(?:badword|test)\b) - 如果在当前位置的右侧,除了换行符之后有0个字符,后跟字边界badword或{ {1}}子字符串,然后是单词边界
  • test - 然后除了换行符之外还有0个以上的字符
  • .* - 字符串/行的结尾。

答案 1 :(得分:-1)

这似乎可以解决问题:

^(?!.*\bbadword\b)(?!.*\btest\b).*$