繁体   English   中英

Python中的可选字符串匹配

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM