Skip to main content
 首页 » 编程设计

python之正则表达式不匹配

2024年08月15日32itcoder

我正在尝试匹配以这种格式出现的值:

, ####-####-####-#### 
, ####-########-##### 
, ##-###-#-###-##-#-#### 

例如:2018-03-10、2018-02-10-2019、10-20-2016

应该只捕获 , 2018-02-10-2019 但它正在捕获所有行。

开头的,是可选的。我基本上是在尝试查找其中包含 3 个或更多连字符的值。

这是我正在使用的:

(, )?([\/-]?)(\d+[\/-]?){4,} 

这不仅捕获了我想要的值,而且还捕获了这样的值:

30/05/2018 

有人可以帮我解决这个问题吗?

编辑#1:

这不是一个重复的问题,一个是通过连字符匹配,另一个是匹配数字。它们位于不同的位置,代表不同的事物。

请您参考如下方法:

您可以使用此正则表达式 (\d+(?:\-\d+){3,})。

\d+ 使得匹配应该在开头包含数字。

(?:\-\d+){3,} 匹配连字符及其后的任意数字重复 3 次或更多次。 ?: 是为了使组(括号内的部分)成为非捕获组,以便该组结果不会在匹配中返回(例如 re.findall)。