re.findall("(100|[0-9][0-9]|[0-9])%", "89%")
這隻返回結果[89]
,我需要返回整個89%。任何想法如何做到這一點?Python - re.findall返回不需要的結果
re.findall("(100|[0-9][0-9]|[0-9])%", "89%")
這隻返回結果[89]
,我需要返回整個89%。任何想法如何做到這一點?Python - re.findall返回不需要的結果
平凡解:
>>> re.findall("(100%|[0-9][0-9]%|[0-9]%)","89%")
['89%']
更漂亮的解決方案:
>>> re.findall("(100%|[0-9]{1,2}%)","89%")
['89%']
最漂亮的解決方案:
>>> re.findall("(?:100|[0-9]{1,2})%","89%")
['89%']
>>> re.findall("(?:100|[0-9][0-9]|[0-9])%", "89%")
['89%']
當有捕捉組findall
只返回captu紅色部分。使用?:
以防止括號成爲捕獲組。
將'100 | [0-9] [0-9] | [0-9]'改變爲'\ d {1,3}'是否會改變模式的意圖? – Bryan
使用的外組,與內基團的非捕獲組:
>>> re.findall("((?:100|[0-9][0-9]|[0-9])%)","89%")
['89%']
使它成爲一個串; ''89%'' – 2013-04-16 19:40:32