regex re.search 中的www.example.com,返回逗号分隔的整数列表

iezvtpos  于 2023-01-27  发布在  其他
关注(0)|答案(1)|浏览(113)

我有一个字符串列表如下:

my_list = ['array("i", [12694499, 12855016, 123457])',
'array("i", [12694499, 12865016, 123457])',
'array("i", [12694499, 12855016])',
'array("i", [12699749, 12877477])',
'array("i", [12828285, 12868277])',
'array("i", [-1])',
'array("i", [-1])',
'array("i", [-1])']

我是一个在python中使用正则表达式的新手,我正在尝试使用re.search来提取括号中的值并用逗号分隔,如下所示:

[12694499, 12855016, 123457]
[12694499, 12865016, 123457]
[12694499, 12855016]
[12699749, 12877477]
[12828285, 12868277]
[-1]
[-1]
[-1]

我试过这个:

for value in my_list:
    coords = re.search(r"\[[0-9]+,\s[0-9]+\]", value)
    print(coords)

但我得到了这个

None
None
None
None
None
None
None
None

我知道我可以使用split()来获得数字,但我真的很想了解RE在python中是如何工作的。
任何建议都将不胜感激!

oyxsuwqo

oyxsuwqo1#

您的代码实际上与第3、第4和第5项匹配。
但是,如果要获得所有匹配项,可以使用可选的连字符-?,也可以使用逗号和数字(?:,\s-?[0-9]+)*重复该部分
然后,首先检查re.search的结果,并使用.group()打印该值

for value in my_list:
    coords = re.search(r"\[-?[0-9]+(?:,\s-?[0-9]+)*]", value)
    if coords:
        print(coords.group())

产出

[12694499, 12855016, 123457]
[12694499, 12865016, 123457]
[12694499, 12855016]
[12699749, 12877477]
[12828285, 12868277]
[-1]
[-1]
[-1]

参见Python demo

相关问题