2012-04-13 13 views
0

私は以下のテキストがあります。Python:正規表現で「または」を使用するにはどうすればよいですか?

text='apples and oranges apples and grapes apples and lemons' 

を、私は以下のような何かを達成するために、正規表現を使用したい:

「リンゴとオレンジ」

「りんごとレモン」

私はこれを試しましたre.findall('apples and (oranges|lemons)',text)、しかしそれは動作しません。

更新:「オレンジ」と「レモン」は、リストした場合:new_list=['oranges','lemons']、どのように私はに行くことができる(?:「オレンジ」|「レモン」)それらを再度入力せず?

アイデア?ありがとう。

+2

うーん。私のために働く。あなたが試したことを正確に明らかにし、正確に何が出力されたのかを明確にする必要があります。 –

答えて

6

re.findall():1つ以上のグループがパターンに存在する場合は、グループのリストを返します。パターンに複数のグループがある場合は、これはタプルのリストになります。

これを試してみてください:

re.findall('apples and (?:oranges|lemons)',text) 

(?:...)は、正規表現の丸括弧の非捕捉したバージョンです。

+0

これはうまくいった。ありがとう。 – GiannisIordanou

0

ノンキャプチャグループre.search('apples and (?:oranges|lemons)',text)を試しましたか?

2

あなたが動作するはずで説明した内容:

example.pyで:

import re 
pattern = 'apples and (oranges|lemons)' 
text = "apples and oranges" 
print re.findall(pattern, text) 
text = "apples and lemons" 
print re.findall(pattern, text) 
text = "apples and chainsaws" 
print re.findall(pattern, text) 

python example.pyの実行:

['oranges'] 
['lemons'] 
[] 
関連する問題