gpt4 book ai didi

python - Python 中的正则表达式 : not able to match repeated group numbers

转载 作者:行者123 更新时间:2023-11-28 19:00:06 29 4
gpt4 key购买 nike

我使用正则表达式检测 Python 字符串中从“0”到“999 999 999”的数字。

import re

test_string = "b\'[<span id=\"prl\">114 893</span>]\'"

working_pattern = "\d{1,3}\s\d{3}"
non_working_pattern = "\d{1,3}(\s\d{3}){0,2}"

wk_ptrn = re.findall(working_pattern, test_string)
non_wk_ptrn = re.findall(non_working_pattern, test_string)

print(wk_ptrn)
print(non_wk_ptrn)

结果是:

print(wk_ptrn)显示:['114 893']
print(non_wk_ptrn)显示:[' 893'] (第一个数字前有一个空格)

non_working_pattern 是 "\d{1,3}(\s\d{3}){0,2}"

\d{1,3} :

检测 1 到 3 个数字 [0 到 999]

\s\d{3} : 

检测后跟 3 位数字 ["000"到 "999"] 的任何空格

{0,2} : 

是一个量词,所以我可以检测到 "0" (quantifier = 0)"999[ 999][ 999]" (quantifier = 2) .

我不明白为什么"\d{1,3}(\s\d{3}){0,2} "不起作用。
你能帮我找出错误吗?

谢谢。问候。

最佳答案

你快到了,但你应该按如下方式更改它:

pattern = "\d{1,3}(?:\s\d{3}){0,2}"

?: 使组不捕获,因此 findall将返回整个匹配项,而不仅仅是组。如链接文档所述:

If one or more groups are present in the pattern, return a list of groups

关于python - Python 中的正则表达式 : not able to match repeated group numbers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53634128/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com