正则表达式不匹配

时间:2018-08-28 03:35:18

标签: python regex python-3.x pandas

我正在尝试匹配以下格式的值:

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

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

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

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

这是我正在使用的:

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

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

30/05/2018

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

编辑#1:

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

1 个答案:

答案 0 :(得分:3)

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

\d+使之匹配,以便匹配项的开头应包含数字。

(?:\-\d+){3,}匹配连字符,并且连字符后面的任意数字重复3次或更多次。 ?:用于将组(括号内的部分)设置为非捕获组,以使该组结果不会在匹配项中返回(例如re.findall)。