这是我第一次在这里提出问题,而且我是Python的初学者。我将文本中的时间(小时和分钟)与天数相匹配。我为此写了这个表达式:
(([0-9]+.?[0-9]+(a|p)m)[(Mon|Tues|Wednes|Thurs|Fri|Satur|Sun)day]?)
但是,它只匹配没有天的时间。您能帮我请问那个表达方式有什么问题吗? 非常感谢
答案 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来构建正则表达式并在适当位置进行测试。