python - 不在正则表达式中不起作用

标签 python regex

我正在尝试创建一个正则表达式,当一行中有一个数字后跟一个确定的单词时,它会匹配该行。

例如:

10 ok

但是如果 ok 单词后面有数字和 nok,那么它不应该匹配。 例如:

10 ok    2 nok

我使用以下正则表达式来实现此目的:

[0-9]+\s+ok\s+(?!([0-9]+\s+nok))

我正在使用 Which regular expression operator means 'Don't' match this character? 中的第四个答案在我的正则表达式中生成 not 功能。

这是我的代码:

import re

prog=re.compile('[0-9]+\s+ok\s+(?!([0-9]+\s+nok))')
result=prog.search('108601                  ABC_kill                            11 ok  3 nok        95m   25_KLPO   casdas5  dus41  fdd     tm500  sdfsd1010_1014             2m    2016-02-11 02:30:50  2016-02-11 08:53:59')

print (result)

但我的模式仍然与包含 nok 的行匹配

最佳答案

您可以使用此正则表达式:

\d+\s+ok(?!\s+\d+\s+nok)

RegEx Demo

重要的是要将 \s+ 保留在否定前瞻内,以使第二种情况的匹配失败。

关于python - 不在正则表达式中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35370296/

相关文章:

python - PyQt:WAITING小部件关闭

python - pandas dataframes 将行合并为列

Java使用正则表达式提取文件名

PHP-在循环中搜索数组中的字符串

python - 拆分命令 - 选择输出名称

python - 在 Linux 上使用 headless Chrome 访问拒绝页面,而有头 Chrome 通过 Python 使用 Selenium 在 Windows 上运行

python - 如何在满足给定条件时终止Python中的多进程?

python - scrapy python 重新声明

java - 需要在正则表达式中转义的所有特殊字符的列表

java - 正则表达式查找 xml 标签之间的特殊字符