我正在尝试匹配以这种格式出现的值:
, ####-####-####-####
, ####-########-#####
, ##-###-#-###-##-#-####
例如: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)。
