gpt4 book ai didi

python - 在 Python 中使用 findall 多个模式的正则表达式

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

假设我有一个字符串s = “如果我们得到 0x12 到 0x34 的正确答案,我们就是‘团队’的‘冠军’”

我想得到一个列表['Champion','The Team','0x12','0x34']

这是我尝试过的:

k = re.findall(r'(\'\w+\')|(0x\w+)',s)

但我得到的是这个

[("'Champion'", ''), ('', '0x12'), ('', '0x34')]

如何修复我的代码?

最佳答案

这是因为 (...) 是一个 capturing group ,它使您的匹配返回一个元组,其中包含与 (...) 之间的子正则表达式匹配的字符串。

您可以使用 (?:...) 来让您的组不捕获。或者在这种情况下,您可以完全删除括号。

re.findall(r"'[^']+'|0x\w+",s)
# ["'Champion'", "'The Team'", '0x12', '0x34']

请注意,如果您期望固定数量的匹配项,您实际上可以使用捕获组来解决您的问题。

re.match(r".*?'([^']+)'.*?'([^']+)'.*?(0x\w+).*?(0x\w+)",s).groups()
# ("Champion", "The Team", '0x12', '0x34')

关于python - 在 Python 中使用 findall 多个模式的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49062891/

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