Python:我如何使用"或"在正则表达式?

时间:2012-04-13 00:37:42

标签: python regex

我有以下文字:

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

我希望使用正则表达式来实现如下所示:

'苹果和橘子'

“苹果和柠檬”

我试过这个re.findall('apples and (oranges|lemons)',text),但它不起作用。

更新:如果'oranges'和'lemons'是一个列表:new_list=['oranges','lemons'],我怎么能不键入它们去?('''oranges'|'lemons')再次?

有什么想法吗?感谢。

3 个答案:

答案 0 :(得分:6)

re.findall():如果模式中存在一个或多个组,则返回组列表;如果模式有多个组,这将是一个元组列表。

试试这个:

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

(?:...)是常规括号的非捕获版本。

答案 1 :(得分: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']
[]

答案 2 :(得分:0)

您是否尝试过非捕获组re.search('apples and (?:oranges|lemons)',text)