Python - re.findall返回不需要的结果

Jak*_*sky 5 python regex findall

re.findall("(100|[0-9][0-9]|[0-9])%", "89%")
Run Code Online (Sandbox Code Playgroud)

这只返回结果[89],我需要返回整个89%.有什么想法可以吗?

Joh*_*ica 10

>>> re.findall("(?:100|[0-9][0-9]|[0-9])%", "89%")
['89%']
Run Code Online (Sandbox Code Playgroud)

当有捕获组findall时,仅返回捕获的部分.使用?:防止括号从一个捕获组.


0x9*_*x90 6

琐碎的解决方案:

>>> re.findall("(100%|[0-9][0-9]%|[0-9]%)","89%")
['89%']
Run Code Online (Sandbox Code Playgroud)

更美的解决方案:

>>> re.findall("(100%|[0-9]{1,2}%)","89%")
['89%']
Run Code Online (Sandbox Code Playgroud)

最漂亮的解决方案:

>>> re.findall("(?:100|[0-9]{1,2})%","89%")
['89%']
Run Code Online (Sandbox Code Playgroud)