在 python 中,如何防止它返回空字符串列表?
>>> re.findall(re.compile("(?!lala)"),"lala")
['', '', '', '']
在 python 中,如何防止它返回空字符串列表?
>>> re.findall(re.compile("(?!lala)"),"lala")
['', '', '', '']
您正在寻找一个没有后跟 text 的空字符串,这是lala
一个否定的前瞻断言。
由于有 4 个这样的位置带有一个空字符串(在字母之间和末尾),因此有 4 个空匹配。
它正在返回您正在寻找的东西,也许您正在寻找其他东西?
首先:(?!lala)
不是一个很好的正则表达式。(正如您自己发现的那样)其次,findall 将查找几乎可以找到的任何内容,并且由于您不是真的在寻找任何内容,并且您正在寻找 4 个字符的内容,因此您会得到 4 个空字符串。
要解决这个问题,你应该帮助你的正则表达式
试试这个链接http://regexr.com?32dcm
我已经复制了你的正则表达式和一些随机行来给你看一个例子。也在下面:
^(?!lala).*$
将匹配任何不以 lala 开头的行。因为你没有明确你的确切期望,这就是我认为你正在尝试做的事情。