2011-09-15 9 views
0

["xxx", "yyy", "zzz"]のような単語のリストと文字列を照合する式を探しています。文字列は3つの単語すべてを含む必要がありますが、同じ順序である必要はありません。pythonでregexを使って行の単語のリストと一致する

例:は、以下の文字列が一致する必要があります。

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

または

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

繰り返しは許されますか(つまり、xxxは2回以上出現する可能性がありますか)? –

+0

繰り返しは許可されますが、3つの単語はすべて少なくとも1回は発生します。 – 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'がするならregexを使う必要はありません。 :) –

0

私は一致を見つけるのにallre.searchを使用します。

>>> words = ('xxx', 'yyy' ,'zzz') 
>>> text = "sdfjhgdsf zzz sdfkjsldjfds yyy dfgdfgfd xxx" 
>>> all([re.search(w, text) for w in words]) 
True 
関連する問題