我正在尝试匹配以下格式的值:
, ####-####-####-####
, ####-########-#####
, ##-###-#-###-##-#-####
例如:2018-03-10, 2018-02-10-2019, 10-20-2016
应该只捕获, 2018-02-10-2019
,但它捕获所有行。
开头的,
是可选的。我基本上是在尝试查找包含3个或更多连字符的值。
这是我正在使用的:
(, )?([\/-]?)(\d+[\/-]?){4,}
这不仅捕获了我想要的值,而且还捕获了这样的值:
30/05/2018
有人可以帮我解决这个问题吗?
编辑#1:
这不是重复的问题,一个是通过连字符匹配,另一个是匹配数字。它们在不同的位置,代表不同的事物。
答案 0 :(得分:3)
您可以使用此正则表达式(\d+(?:\-\d+){3,})
。
\d+
使之匹配,以便匹配项的开头应包含数字。
(?:\-\d+){3,}
匹配连字符,并且连字符后面的任意数字重复3次或更多次。 ?:用于将组(括号内的部分)设置为非捕获组,以使该组结果不会在匹配项中返回(例如re.findall)。