正则表达式,用于检查字符串中是否不存在字符

时间:2019-11-30 16:16:36

标签: regex python-3.x

我很难弄清楚如何创建一个RegEx,该RegEx检查在模式之后的行的任何时刻是否没有出现字符。

我有以下日志:

3/9/18, 17:47 - Person 1: Hello guys!
3/10/18, 22:59 - Person 2 joined the group.
3/10/18, 09:35 - Person 2: Sup!
What's cracking?
3/10/18, 09:36 - Person 1: Not much...

我一次要读一行,所以我需要丢弃具有以下模式的行:date, hour - warning.,就像上面示例中的第二行一样,因为它们是系统的行,而不是对话。

到目前为止,我所要做的就是这个RegEx:

\d*\/\d*\/\d*, \d*:\d* - (?!\:)

但是否定的行首(?!\:)仅检查-之后的字符,而不检查字符串的其余部分。如何强制此RegEx检查其余字符串中是否没有:

这里是demo

2 个答案:

答案 0 :(得分:2)

您可以使用{0}匹配0次以上的negated character class [^,而不是换行符或:,然后在否定前瞻中匹配:

请注意匹配\d+以匹配1个以上的数字,而不匹配//, : -

\d+/\d+\/\d+, \d+:\d+ - (?![^\r\n:]*:)

关于最后一部分:

  • (?!负向超前
    • [^\r\n:]*匹配除换行符或冒号以外的任何字符,其匹配次数为0+
    • :匹配冒号
  • )提前关闭

Regex demo

答案 1 :(得分:2)

  

如何强制此RegEx检查其余的 :   字符串?

具有前瞻性断言:

\d+/\d+\/\d+, \d+:\d+ -(?=[^:]+$)

https://regex101.com/r/KD3kW4/1