gpt4 book ai didi

python - 获取正则表达式的所有可能匹配项(在 python 中)?

转载 作者:太空宇宙 更新时间:2023-11-04 07:24:28 25 4
gpt4 key购买 nike

我有一个正则表达式,可以以多种重叠的可能方式匹配一个字符串。但是,它似乎只捕获了字符串中的一个可能匹配项,我怎样才能获得所有可能的匹配项?我试过 finditer 但没有成功,但也许我用错了。

我要解析的字符串是:

foo-foobar-foobaz

我使用的正则表达式是:

(.*)-(.*)

>>> s = "foo-foobar-foobaz"
>>> matches = re.finditer(r'(.*)-(.*)', s)
>>> [match.group(1) for match in matches]
['foo-foobar']

我想要匹配项 (foo 和 foobar-foobaz),但它似乎只能匹配 (foo-foobar 和 foobaz)。

最佳答案

没问题:

>>> regex = "([^-]*-)(?=([^-]*))"
>>> for result in re.finditer(regex, "foo-foobar-foobaz"):
>>> print("".join(result.groups()))
foo-foobar
foobar-foobaz

通过将第二个捕获括号放在 lookahead assertion 中,您可以捕获其内容,而无需在整体匹配中消耗它。

我还使用了 [^-]* 而不是 .* 因为点也与您可能没有的分隔符 - 相匹配'想要。

关于python - 获取正则表达式的所有可能匹配项(在 python 中)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7383818/

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