首页 > 解决方案 > 如何在 Python 中使用正则表达式将时间与天数匹配?

问题描述

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

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

但是,它只匹配没有天数的时间。你能帮我看看这个表达有什么问题吗?非常感谢

标签: regexpython-3.x

解决方案


问题在 内[(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来构建您的正则表达式并就地测试它们。


推荐阅读