亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

正則表達,re.findall函數第一項與re.search的match結果不同,求教?

正則表達,re.findall函數第一項與re.search的match結果不同,求教?

慕標琳琳 2019-05-23 11:24:23
想在一行字符串中找出所有的非負整數,例如"+14010-5+3"中的+14,0,10,+3。但不返回-5or5。代碼如下:print(re.findall(r"(\+\d+|[^-]\d+|[0]+)","+14010-5+3"))#line1print(re.findall(r"[^-](\+\d+|\d+|[0]+)","+14010-5+3"))#line2print(re.search(r"[^-](\+\d+|\d+|[0]+)","+14010-5+3"))#line3print(re.search(r"[^-](\+)?\d+","+14010-5+3"))#line4print(re.findall(r"[^-](\+)?\d+","+14010-5+3"))#line5輸出結果:['+14','0','10','+3']['14','0','10','+3']['','','','+']詳細問題:(1)按說line1和line2結果應該一樣吧?(2)按說line2的第一個返回項,應該和第三行一樣,是“+14”吧?為什么是“14”呢?(3)按說line4和line5的第一個返回結果一樣都是“+14”吧?為什么出來是''空字符呢?網上找正則表達測試,我的正則表達都能輸出我想要的結果,是python的問題嗎?
查看完整描述

2 回答

?
Smart貓小萌

TA貢獻1911條經驗 獲得超7個贊

對于line2到line5,都是1跟+匹配,然后括號里跟剩下的字符串匹配。由于你第一字符沒有捕獲,所以findall的結果中沒有第一個正號。而match返回的匹配的對象,并不需要捕獲,所以是+14。
-?
                            
查看完整回答
反對 回復 2019-05-23
  • 2 回答
  • 0 關注
  • 318 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號