Python正则表达式多次匹配

2024-03-28 21:42:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把它作为一个基本的Python正则表达式问题。 我有一个数据集

line = "(1,2) (2,3)" 

它可以重复很多次,所以线也可以

line = "(1,2) (3,4) (6,5)"

我有一个正则表达式

rx = "(\(\s*\d+\s*,\s*\d+\s*\)\s*){2,}$"

我想要

a = re.match(rx,line).groups();

匹配

('(1,2)','(3,4)'...)

但我只能和最后一个(6,5)匹配。我需要最后的$,因为我不知道我可以有多少括号内的输入,否则一个不正确的输入,如

(1,2),(3,4),(5,6

将通过regexp。你知道吗

有什么建议吗?你知道吗

编辑: 添加了一个事实,即数据的格式没有精确到详细的程度。相反

line= 'blah(1,2) (2,3)blah'

所以确实需要正则表达式

谢谢


Tags: 数据re编辑格式matchlinerx建议
3条回答

尝试使用re.findall(rx, line)

瞧,正则表达式的魔力:

>>> "(1,2) (3,4) (6,5)".split()
['(1,2)', '(3,4)', '(6,5)']

如果您真的想使用正则表达式(我不是正则表达式专家,但它可以处理给定的数据):

r = "[\(\d+,\d+\)]{1,}"
c = re.findall(r,line)

或者听从夜贼的建议。最简单的答案往往是最好的答案。你知道吗

编辑:感谢Joran Beasley的建议。你知道吗

相关问题 更多 >