Skip to main content
 首页 » 编程设计

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

2024年08月23日31lovecherry

我正在尝试制作一个正则表达式,当它有一个数字后跟一个 ok 词时匹配一行。

例如:

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? 中的第 4 个答案在我的正则表达式中生成一个 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+ 保留在否定前瞻中,以使第二种情况的匹配失败。