gpt4 book ai didi

Python正则表达式在任何地方匹配多个单词

转载 作者:太空狗 更新时间:2023-10-29 22:04:08 25 4
gpt4 key购买 nike

我正在尝试使用 python 的正则表达式来匹配包含多个单词的字符串。例如,字符串是“这些是橙子、苹果和梨,但不是菠​​萝或 ..”我要查找的单词列表是“和”、“或”和“不是”。无论顺序还是位置。

我试过 r'AND |或者 |不是但没有用。

还尝试了 r'.*?\bAND\b.*?\bOR\b.*?\bNOT\b.*?$还是不行……

不擅长正则表达式..和提示?谢谢!

最佳答案

你在那里遇到了一些问题。

首先,匹配是区分大小写的,除非您使用IGNORECASE/I 标志来忽略大小写。所以,'AND' 不匹配 'and'

此外,除非您使用 VERBOSE/X 标志,否则这些空格是模式的一部分。因此,您要检查的是 'AND',而不是 'AND'。如果你想要那样,你可能想要每一边都有空格,而不仅仅是那些边(否则,'band leader' 将匹配......),实际上,你可能想要 \b,而不是空格(否则以 'And another thing' 开头的句子将不匹配)。

最后,如果您认为在您的模式前后需要 .* 以及它周围的 $^,那么您很有可能想使用 searchfindallfinditer,而不是 match

所以:

>>> s = "These are oranges and apples and pears, but not pinapples or .."
>>> r = re.compile(r'\bAND\b | \bOR\b | \bNOT\b', flags=re.I | re.X)
>>> r.findall(s)
['and', 'and', 'not', 'or']

Regular expression visualization

Debuggex Demo

关于Python正则表达式在任何地方匹配多个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26985228/

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