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

使用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'] 
FFIVE
浏览 1810回答 1
1回答

POPMUISE

别的语言也是这样 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) 这几个是零宽断言,只匹配位置,不消耗字符。 位置之后的零个字符''正好符合.*
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python