为了账号安全,请及时绑定邮箱和手机立即绑定

Python正则表达式中findall返回列表中包含空字符串

Python正则表达式中findall返回列表中包含空字符串

FFIVE 2019-02-25 16:10:08
使用re.findall()查找字符串,使用了$标识查找到字符串结尾,但是返回的list中最后一个元素为空字符串 s = 'ABCD' m = re.findall(r'.*$', s) if m: print(m) # output ['ABCD', ''] 为什么在第一次已经匹配到字符串结尾$的情况下,findall没有停止还做了一次匹配?而相比^就没有在开始处^多做一次这样的查找: s = 'ABCD' m = re.findall(r'^.*', s) if m: print(m) # output ['ABCD']
查看完整描述

1 回答

?
POPMUISE

TA贡献1765条经验 获得超5个赞

别的语言也是这样

js

'ABCD'.match(/.*$/g)
["ABCD", ""]
'ABCD'.match(/^.*/g)
["ABCD"]

python3

>>> re.findall(r'.*\b', 'ABCD')
['ABCD', '']
>>> re.findall(r'.*(?=$)', 'ABCD')
['ABCD', '']
>>> re.findall(r'.{0,}(?=$)', 'ABCD')
['ABCD', '']
\b、^、$、(?=exp)

这几个是零宽断言,只匹配位置,不消耗字符。

位置之后的零个字符''正好符合.*

查看完整回答
反对 回复 2019-03-04
  • 1 回答
  • 0 关注
  • 1804 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信