如何改进以下python日期正则表达式?

时间:2017-02-17 20:02:58

标签: python regex python-3.x

我使用此regex匹配多种日期格式。

(?i)\b\d{1,2}[-|–|—|\s|(?:\sde\s|\sdel\s)|\d+/](?:Ene|Enero|Feb|Febrero|Mar|Marzo|Abril|Mayo|May|Jun|Junio|Jul|Julio|Ago|Agosto|Sep|Sept|Septiembre|Oct|Octubre|Nov|Noviembre|Dic|Diciembre|\d+)[-|–|—|\s|(?:\sde\s|\sdel\s)|\d+/](?:\d{4}|\d{2})\b

但是,我不知道如何添加以前的正则表达式支持匹配这样的格式:

11 de Noviembre de 2013

23 de noviembre del 2011

11 de Noviembre del 2013

正如您在上面的正则表达式中看到的那样,我尝试使用\w(\sde\s|\sdel\s)(?:\sde\s|\sdel\s)。然而它不起作用。如何匹配之前的日期案例?

2 个答案:

答案 0 :(得分:5)

[-|–|—|\s|(?:\sde\s|\sdel\s)|\d+/]

[-|–|—|\s|(?:\sde\s|\sdel\s)|\d+/]

要求character classes []当你想要的是groups ()时(或者在这种情况下是非捕获组)(?:)

(?:-|–|—|\s|(?:\sde\s|\sdel\s)|\d+/)

(?:-|–|—|\s|(?:\sde\s|\sdel\s)|\d+/)

请参阅regex101

此外,如果您正在寻找原因:

What's the difference between () and [] in regular expression patterns?

答案 1 :(得分:0)

由于这是一个Python问题,为什么不删除 de del &as;通过使用

发生
date = date.replace('de','').replace('del','')

然后像你一样对它进行操作?