[英]Optional String Match in Python
我想在这里使最后一个字符串为可选,以下是我的原始代码:
[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{2,4}
以下是我尝试过的代码(获取无效的括号错误):
[0-9]{1,2}\.[0-9]{1,2}\(?:.[0-9]{2,4})?
当前代码正在捕获话语:
12.2.17
3.04.2018
我进一步希望它通过将最后一部分设为可选来捕获以下内容:
12.2
13.03
您似乎不小心逃脱了(
字符,而不是创建了一个非捕获组。这是新的正则表达式:
[0-9]{1,2}\.[0-9]{1,2}(?:.[0-9]{2,4})?
您还可以以更紧凑的方式编写正则表达式:
\d{1,2}\.\d{1,2}(\.\d{2,4})?
至于你的错误:
[0-9]{1,2}\.[0-9]{1,2}\(?:.[0-9]{2,4})?
# --^-- no backslash here!
或者,您可以使用
\d+\.\d+(?:\.\d+)?
参见regex101.com上的演示 。
Python
:
import re string = """ 12.2.17 3.04.2018 I further want it to capture the following by making the last part optional: 12.2 13.03""" rx = re.compile(r'(\\d+\\.\\d+(?:\\.\\d+)?)') print(rx.findall(string)) # ['12.2.17', '3.04.2018', '12.2', '13.03']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.