python - 正则表达式中 {} 符号的 OR 条件
问题描述
我有一个正则表达式:
((?:4903|4905|4911|4936|6333|6759)[0-9]{12}|(?:4903|4905|4911|4936|6333|6759)[0-9]{14}))
您会注意到,在(?:4903|4905|4911|4936|6333|6759)[0-9]
I 中的 4 位数字之后,要么需要 12 位数字,要么需要 14 位数字。等价于 的条件[0-9]{12|14}
。
有没有办法做到这一点?让我知道是否需要更多说明。
解决方案
为什么不只是'[0-9]{12}($|[0-9]{2}$)'
?
>>> regex = re.compile('[0-9]{12}($|[0-9]{2}$)')
>>> for i in range(11, 15):
... print(f'Match for string of length {i}: {re.match(regex, "0" * i) is not None}')
...
Match for string of length 11: False
Match for string of length 12: True
Match for string of length 13: False
Match for string of length 14: True
如果您希望匹配不以字符串结尾结尾的 14 位数字,则需要将'$'
标记替换为其他内容,例如'?'
.
推荐阅读
- css - Font Awesome 5.0.13 一些图标不起作用
- javascript - Javascript,从精灵表中绘制文本,模拟回车
- omnet++ - omnetpp IDE 上的 opp_run 错误
- python - 在数组中匹配时更新值
- swift - Swift OSX - 从另一个类更新 NSTextView,也许是线程
- python - Pandas:给定最终值的库存重新计算
- c# - OpenGL 模型覆盖以前的模型
- sql - 如何从最后 5 整分钟获取数据?
- hadoop - 用hadoop fs mv覆盖目的地?
- ansible - 如何将字典变量写入 Ansible 中的文件?