python - 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 它返回apple14
但ELSE
不起作用。我希望它会返回apple24
case2
解决方案
采用:
(?(?=apple1\d)apple1\d|apple2\d)
该IF
部分应该是前瞻的,因此在采用ELSE
分支时它不包含在匹配要求中。
如果不想重复 中的IF
表达式THEN
,可以使用反向引用。
(?(?=(apple1\d))\1|apple2\d)
推荐阅读
- javascript - 如何为图标创建事件监听器?
- html - 我怎样才能摆脱这个 Firefox 控制台警告?
- javascript - html 5 canvas 平台风格游戏的反弹物理
- java - 使用 new 关键字调用时从提供空指针的组件调用的自动装配服务
- keyboard-shortcuts - 热键 X = 删除和 X 轴?
- javascript - 通过路由更改组件时,函数调用永远不会停止
- hex - 为什么十六进制转储中的偏移量比以前多 10?
- time-complexity - sort(..) 如何影响我算法的 Big-O 表示法
- python - 将列表列表拆分为列表,每个列表包含 x 项,列表的数量是列表的两倍,每个列表包含 x/2 项
- javascript - property find does not exists on type Posts[]