首页 > 解决方案 > If-Then-Else 正则表达式语句

问题描述

我正在尝试形成一个正则表达式,<expression1>如果它在字符串中则捕获,否则捕获<expression2>

我尝试了类似的东西:(IF)(?(1)THEN|ELSE),这意味着捕获将是IFTHEN(以防IF找到)或ELSE(以防IF未找到)

例如:

(apple1\d)(?(1)|apple2\d)

case1:对于字符串:pear33 apple14 apple24 orange22 orange44

结果将是:apple14

case2:与字符串相反:pear33 apple24 orange22 orange44

结果将是:(apple24 因为没有apple1它会捕获apple2\d

我的正则表达式适用于 case1 它返回apple14ELSE不起作用。我希望它会返回apple24case2

标签: pythonregexif-statement

解决方案


采用:

(?(?=apple1\d)apple1\d|apple2\d)

IF部分应该是前瞻的,因此在采用ELSE分支时它不包含在匹配要求中。

如果不想重复 中的IF表达式THEN,可以使用反向引用。

(?(?=(apple1\d))\1|apple2\d)

推荐阅读