Python中时间实例的正则表达式匹配

Python中时间实例的正则表达式匹配,python,regex,python-3.x,Python,Regex,Python 3.x,我试图使用Python正则表达式识别时间实例,例如“2.30pm”、“1.45am”、“3.30”(前提是没有给出am/pm) 下面是我写的正则表达式: '\d{1,2}\.\d{1,2}[\s]?[am,pm]?' 我得到的输出: 2.30便士 我需要的输出: 下午二时三十分 另外,我希望它将字符串(如“2.30pmo”)捕捉为“2.30”,而不是“2.30pm” 有人能帮我吗?要匹配这个或那个单词,你必须使用regex group而不是character class for。字符类[]用于

我试图使用Python正则表达式识别时间实例,例如“2.30pm”、“1.45am”、“3.30”(前提是没有给出am/pm)

下面是我写的正则表达式:

'\d{1,2}\.\d{1,2}[\s]?[am,pm]?'
我得到的输出: 2.30便士

我需要的输出: 下午二时三十分

另外,我希望它将字符串(如“2.30pmo”)捕捉为“2.30”,而不是“2.30pm”


有人能帮我吗?

要匹配这个或那个单词,你必须使用regex group而不是character class for。字符类
[]
用于在单个字符上执行操作或发挥作用,它不适用于一组字符。使用带有
|
的捕获组或非捕获组作为分隔符,以便对字符组执行或操作

r'\b\d{1,2}\.\d{1,2}\s?(?:[ap]m\b)?'

试试这个
re.match('\d{1,2}(\.\124;:)\ d{1,2}[\s]?(am{pm{124; am}pm)?,'2:30AM').group()
模式。它将从字符串中提取时间模式

谢谢,它适用于上述情况,请您建议我进行更改,使其不会将“2.30 pmo”捕获为“2:30 pm”,而仅捕获为“2.30”。不幸的是,它没有。“2.30pm”或“2.30pmo”没有得到任何东西。请删除第二个
\b