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

标签 python regex

我正在尝试使用 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/

相关文章:

java - 解释正则表达式

javascript - WebWorker 计算慢速正则表达式匹配速度明显慢 (3x) - 仅限 firefox

python - 如何在 Python DataFrame 中的确定行之前添加空行?

python - Jira-Python错误

python - Splinter 在 PayPal 中不起作用

regex - 使用 sed 在 cygwin 中替换 ""string"\1\"787"到 "string"\1\"787"

python - 从列表中生成多个条件语句

python - 如何从 Pandas 中丝网打印两列值?

javascript - 正则表达式只是电子邮件的开头

php - 删除字符串中不需要的字符