使用re.findall()查找字符串,使用了$標(biāo)識(shí)查找到字符串結(jié)尾,但是返回的list中最后一個(gè)元素為空字符串
s = 'ABCD'
m = re.findall(r'.*$', s)
if m:
print(m)
# output ['ABCD', '']
為什么在第一次已經(jīng)匹配到字符串結(jié)尾$的情況下,findall沒(méi)有停止還做了一次匹配?而相比^就沒(méi)有在開(kāi)始處^多做一次這樣的查找:
s = 'ABCD'
m = re.findall(r'^.*', s)
if m:
print(m)
# output ['ABCD']
1 回答

POPMUISE
TA貢獻(xiàn)1765條經(jīng)驗(yàn) 獲得超5個(gè)贊
別的語(yǔ)言也是這樣
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)
這幾個(gè)是零寬斷言
,只匹配位置,不消耗字符。
位置之后的零個(gè)字符''
正好符合.*
添加回答
舉報(bào)
0/150
提交
取消