1

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

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

2 回答 2

4

您正在寻找一个没有后跟 text 的空字符串,这是lala一个否定的前瞻断言。

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

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

于 2012-10-09T12:28:37.820 回答
-1

首先:(?!lala)不是一个很好的正则表达式。(正如您自己发现的那样)其次,findall 将查找几乎可以找到的任何内容,并且由于您不是真的在寻找任何内容,并且您正在寻找 4 个字符的内容,因此您会得到 4 个空字符串。

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

试试这个链接http://regexr.com?32dcm

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

^(?!lala).*$

将匹配任何不以 lala 开头的行。因为你没有明确你的确切期望,这就是我认为你正在尝试做的事情。

于 2012-10-09T12:32:29.090 回答