在Python中使用正则表达式匹配一行中的单词列表
我想要一个表达式,用来检查字符串是否包含一个单词列表,比如 ["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
我会用 all
和 re.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)