在Python中使用正则表达式匹配一行中的单词列表

1 投票
2 回答
9117 浏览
提问于 2025-04-17 02:22

我想要一个表达式,用来检查字符串是否包含一个单词列表,比如 ["xxx", "yyy", "zzz"]。这些字符串需要包含这三个单词,但顺序可以不一样。

比如,下面这些字符串应该被匹配:

'"yyy" string of words and than “zzz" string of words “xxx"'

或者

'string of words “yyy””xxx””zzz” string of words'

2 个回答

1

我会用 allre.search 来查找匹配的内容。

>>> words = ('xxx', 'yyy' ,'zzz')
>>> text = "sdfjhgdsf zzz sdfkjsldjfds yyy dfgdfgfd xxx"
>>> all([re.search(w, text) for w in words])
True
6

简单的字符串操作:

mywords = ("xxx", "yyy", "zzz")
all(x in mystring for x in mywords)

如果你需要考虑单词的边界(也就是说,你想匹配 zzz 但不想匹配 Ozzzy):

import re
all(re.search(r"\b" + re.escape(word) + r"\b", mystring) for word in mywords)

撰写回答