如何在Python中使用正则表达式将时间与天数匹配?

时间:2018-11-27 18:52:47

标签: regex python-3.x

这是我第一次在这里提出问题,而且我是Python的初学者。我将文本中的时间(小时和分钟)与天数相匹配。我为此写了这个表达式:

(([0-9]+.?[0-9]+(a|p)m)[(Mon|Tues|Wednes|Thurs|Fri|Satur|Sun)day]?)

但是,它只匹配没有天的时间。您能帮我请问那个表达方式有什么问题吗? 非常感谢

1 个答案:

答案 0 :(得分:2)

问题出在[(Mon|Tues|Wednes|Thurs|Fri|Satur|Sun)day]?之内,因为如www.regular-expressions.info所述:

  

仅括号可用于分组。方括号定义了   字符类,花括号用   具体限制。

因此您需要将括号更改为括号:

((Mon|Tues|Wednes|Thurs|Fri|Satur|Sun)day)?

您的最终正则表达式应如下所示:

(([0-9]+.?[0-9]+(a|p)m)((Mon|Tues|Wednes|Thurs|Fri|Satur|Sun)day)?)

我做了一些修改以改善它:

((\d{1,2}:?\d{1,2}(a|p)m)((Mon|Tues|Wednes|Thurs|Fri|Satur|Sun)day)?)

位置:

  • \d[0-9]相同。
  • {1,2}表示前一个令牌应存在1或2次。

作为提示,您可以使用https://regex101.com来构建正则表达式并在适当位置进行测试。