如果单词不是以其他单词开头的话,请注意

时间:2019-02-26 13:04:39

标签: regex python-3.x

我正在尝试解析日志文件并查找与错误相关的行。我上了这样的一行:

Worker Node UP/DOWN Notification received From ICM-GW

它是通知而不是错误的地方,我想查找其中带有 DOWN 信息的行,但要排除是否存在 UP / DOWN 。我尝试了许多正则表达式表达式,但距离更近。 任何帮助都会非常有帮助。

([?!up\/]?(down))

1 个答案:

答案 0 :(得分:2)

[?!up\/]?是与?!up/匹配1或0次的字符类(由于?之后的]量词,它使此模式成为可选)。

您可以使用基于后向的正则表达式,例如

r'(?i)\b(?<!\bup/)down\b'

请参见regex demo

详细信息

  • (?i)-不区分大小写的标志
  • \b-单词边界(以避免与down中的touchdown匹配)
  • (?<!\bup/)-当前位置的左侧不允许直接输入整个单词up
  • down-down字符序列
  • \b-单词边界,紧靠右边,不能有任何单词char(字母,数字或_,以及其他单词,因为re.U标志默认情况下处于启用状态Python 3,但它们并不相关。