0

私は以下のテキストを持っています:

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

正規表現を使用して、次のようなものを実現したいと思います。

「リンゴとオレンジ」

「リンゴとレモン」

これを試しましre.findall('apples and (oranges|lemons)',text)たが、うまくいきません。

更新:「オレンジ」と「レモン」がリストの場合:new_list=['oranges','lemons']、もう一度入力せずに(?:「オレンジ」|「レモン」)に移動するにはどうすればよいですか?

何か案は?ありがとう。

4

3 に答える 3

6

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

これを試して:

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

(?:...)通常の括弧の非キャプチャ バージョンです。

于 2012-04-13T00:43:21.210 に答える
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']
[]
于 2012-04-13T00:45:21.683 に答える
0

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

于 2012-04-13T00:43:20.057 に答える