正则表达式替代方法在Python中如何工作?

变更及其应用

在现实世界的应用程序中,我们经常使用与两个或多个替代项中的任何一个匹配的正则表达式。另外,有时我们使用量词来应用多个表达式。所有这些目标都可以通过用括号进行分组来实现;并且在使用替代方法时,请使用竖线(|)进行交替。

使用竖线(|)

当我们需要匹配几种不同替代方案中的任何一种时,替代方案很有用。例如,正则表达式航空器将匹配包含航空器或飞机或轰炸机的任何文本。通过使用正则表达式飞机可以达到相同的效果。

如果使用正则表达式(airways | airplane | bomber),它将匹配这三个表达式中的任何一个。考虑一下正则表达式(air(ways | plane)| bomber),如果第一个表达式匹配,则有两个捕获(航空或飞机为第一个捕获,而航路或飞机为第二个捕获),如果第二个表达式匹配(轰炸机)。我们可以通过在圆括号后面加上?来关闭捕获效果:

(空气(?:路|飞机)|轰炸机)

 如果匹配(航空,飞机或轰炸机),则只有一个捕获。

示例

以下代码说明了以上讨论的要点-

import re
s = 'airways aircraft airplane bomber'
result = re.findall(r'(airways|airplane|bomber)', s)
print result
result2 = re.findall(r'(air(ways|plane)|bomber)', s)
print result2
result3 = re.findall(r'(air(?:ways|plane)|bomber)', s)
print result3

输出结果

这给出了输出

['airways', 'airplane', 'bomber']
[('airways', 'ways'), ('airplane', 'plane'), ('bomber', '')]
['airways', 'airplane', 'bomber']