2011-09-15 34 views
0

我正在寻找一个表达式来匹配字符串与像["xxx", "yyy", "zzz"]这样的单词列表。字符串需要包含所有三个单词,但它们不需要按照相同的顺序。在python中使用正则表达式匹配一行中的单词列表

例如,以下字符串应该匹配:

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

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

是否允许重复(即可以'xxx'出现多次)? –

+0

重复是允许的,但所有三个单词应至少出现一次。 – shash

回答

4

简单的字符串操作:

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) 
+0

你是对的......如果'in'会执行,不需要使用正则表达式。 :) –

0

我想用allre.search找到匹配项。

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