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

J.D*_*.Do 0 python regex python-3.x

我正在使用这个正则表达式匹配几种日期格式.

(?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
Run Code Online (Sandbox Code Playgroud)

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

Tem*_*olf 5

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

[-|–|—|\s|(?:\sde\s|\sdel\s)|\d+/]
Run Code Online (Sandbox Code Playgroud)

当你想要的是(或者在这种情况下是非捕获组)时,是要求字符类[]:()(?:)

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

(?:-|–|—|\s|(?:\sde\s|\sdel\s)|\d+/)
Run Code Online (Sandbox Code Playgroud)

看到regex101

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

正则表达式模式中()和[]之间有什么区别?

  • 谢谢......我认为`()`和`[]`是一样的 (2认同)
  • @ J.Do Nope.您应该阅读regex101上的说明. (2认同)