正则表达式否定了捕获组返回的答案

时间:2012-10-09 12:26:40

标签: python regex regex-negation

在python中,如何阻止它返回空字符串列表?

>>> re.findall(re.compile("(?!lala)"),"lala")
['', '', '', '']

2 个答案:

答案 0 :(得分:4)

您正在寻找一个空字符串,后面没有文字lala,这是一个负面的先行断言。

由于有4个这样的位置带有空字符串(在字母之间和结尾处),因此有4个空匹配。

它正在返回您正在寻找的东西,也许您正在寻找其他东西?

答案 1 :(得分:-1)

首先:(?!lala)不是一个非常好的正则表达式。 (你自己发现了) 其次,findall会寻找它能找到的任何东西,因为你并不真正寻找任何东西,而你正在寻找4个字符,你会得到4个空字符串。

解决这个问题,你应该帮助你的正则表达式

尝试此链接http://regexr.com?32dcm

我已经复制了你的正则表达式和一些随机行来向你展示一个例子。也在下面:

^(?!lala).*$

将匹配任何不以lala开头的行。 因为你没有把你想要的确切清楚,这就是我认为你要做的事情。