gpt4 book ai didi

python - 当组之间存在随机字符串时匹配可选字符串

转载 作者:太空宇宙 更新时间:2023-11-03 18:01:18 24 4
gpt4 key购买 nike

我对 python 很陌生,当组之间可以有任意数量的字符串时,我在匹配可选字符串时遇到了麻烦。这是我正在寻找的示例:

'The quick brown fox jumps over the lazy dog'

我想要'brown'后面的单词,如果出现'lazy'这个单词,我也想要它后面的单词,即:

'The quick brown fox jumps over the lazy dog'      --> ('fox', 'dog')
'The quick brown fox' --> ('fox', '')
'The quick brown fox dfjdnjcnjdn vvvv lazy mouse' --> ('fox', 'mouse')
'The quick brown fox lazy dog' --> ('fox', 'dog')

这是我尝试过的,但它不起作用

re.findall(r'brown (\S+)(.*?)(lazy )?(\S+)?', str)

我做错了什么以及如何解决这个问题?

最佳答案

您可以使用以下内容来获取您要查找的单词:

brown (\S+)(?:.*lazy (\S+))?

这将给出一个元组列表,如果 lazy 不存在,则带有空字符串。

>>> import re
>>> s = """The quick brown fox jumps over the lazy dog
... The quick brown fox
... The quick brown fox dfjdnjcnjdn vvvv lazy mouse
... The quick brown fox lazy dog"""
>>> re.findall(r'brown (\S+)(?:.*lazy (\S+))?', s)
[('fox', 'dog'), ('fox', ''), ('fox', 'mouse'), ('fox', 'dog')]
>>>

(?: ... ) 用于创建不会被捕获的组,因此里面的内容不一定会通过 re.findall< 进入元组/列表 除非它本身位于捕获组内。

关于python - 当组之间存在随机字符串时匹配可选字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27642229/

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