正则表达式替代方法在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']