gpt4 book ai didi

python - 正则表达式只捕获重复组的最后一次出现

转载 作者:太空宇宙 更新时间:2023-11-03 14:54:19 26 4
gpt4 key购买 nike

我正在尝试使用 Python regular expression 捕获多个“ = ”对来自这样的字符串:

  some(code) ' <tag attrib1="some_value" attrib2="value2"                   en=""/>

正则表达式 '\s*<tag(?:\s*(\w+)\s*=\"(.*?)\")*旨在多次匹配这些对,即返回类似

的内容
"attrib1", "some_value", "attrib2", "value2", "en", ""

但它只捕获最后一次出现:

>>> import re
>>> re.search("'\s*<tag(?:\s*(\w+)\s*=\"(.*?)\")*", ' some(code) \' <tag attrib1="some_value" attrib2="value2" en=""/>').groups()
('en', '')

关注 =" "有效:

>>> re.findall("(?:\s*(\w+)\s*=\"(.*?)\")", '  some(code) \' <tag attrib1="some_value" attrib2="value2"                   en=""/>')
[('attrib1', 'some_value'), ('attrib2', 'value2'), ('en', '')]

所以一个实用的解决方案可能是测试 "<tag" in string在运行这个正则表达式之前,但是..

为什么原始正则表达式只捕获最后一次出现的事件以及需要更改哪些内容才能使其按预期工作?

最佳答案

这就是正则表达式的工作原理:您定义了一个捕获组,因此只有一个捕获组。当它首先捕获某物,然后捕获另一物时,第一个捕获的项目将被替换。这就是为什么您只获取最后一个捕获的原因。 据我所知,没有解决方案...

关于python - 正则表达式只捕获重复组的最后一次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43865507/

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