gpt4 book ai didi

Python 正则表达式组中可选的第二个词

转载 作者:太空宇宙 更新时间:2023-11-04 10:58:58 26 4
gpt4 key购买 nike

我写了下面的正则表达式

m = re.match('.+SPELL_DAMAGE,.+,"([A-Z][a-z]+)",.+"([A-Z][a-z]+\s[A-Z][a-z]+!?)",\d+x\d+,(\d+)',line)

我希望第二组基本上说“寻找一个或两个有时以感叹号结尾的词。

([A-Z][a-z]+\s[A-Z][a-z]+!?)

现在正则表达式只适用于正好有两个单词的第二组。我不确定如何在组内使用 ? 正则表达式和 ()

我在想 ([A-Z][a-z](+\s[A-Z][a-z]+!?)?) 以使第二个词完全可选,但我得到一个错误关于 sre_constants.error: nothing to repeat

所以简而言之,第二组应该匹配“White”或“White House”或“White House!”

谢谢。

最佳答案

([A-Z][a-z](+\s[A-Z][a-z]+!?)?) 在错误的一侧有第一个 + parent 。

尝试 ([A-Z][a-z]+(\s[A-Z][a-z]+!?)?)

>>> re.match(r"([A-Z][a-z]+(\s[A-Z][a-z]+!?)?)", "White House").groups()
('White House', ' House')

此外:要摆脱无意义的“额外单词”组,您可以使用非分组括号:(?:...) 而不是 (...)

所以:

>>> re.match(r"([A-Z][a-z]+(?:\s[A-Z][a-z]+!?)?)", "White House").groups()
('White House',)

关于Python 正则表达式组中可选的第二个词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7149837/

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