Python正则表达式-查找空间,但不包括

Python正则表达式-查找空间,但不包括,python,regex,Python,Regex,我有一根这样的绳子 AT 4:30am some other words maybe another time 3:20pm 每次都会有点不同,但我想要的时间总是第一个,并且总是包含字符串中的第一个数字。时间格式随am、pm、带冒号、不带冒号和不带后缀而变化 下面的内容几乎可以让我达到目的,但在4:15的情况下,它还包括后面的空格。我可以把它脱掉,但我宁愿一开始就把它扔掉。我想我需要使用+符号,但我没有得到正确的结果 \d.+?(am|pm|\s) 使用re.search()函数和特定的正

我有一根这样的绳子

 AT 4:30am some other words maybe another time 3:20pm
每次都会有点不同,但我想要的时间总是第一个,并且总是包含字符串中的第一个数字。时间格式随am、pm、带冒号、不带冒号和不带后缀而变化

下面的内容几乎可以让我达到目的,但在4:15的情况下,它还包括后面的空格。我可以把它脱掉,但我宁愿一开始就把它扔掉。我想我需要使用+符号,但我没有得到正确的结果

\d.+?(am|pm|\s)
使用
re.search()
函数和特定的正则表达式模式:

import re

s = 'AT 4:30am some other words maybe another time 3:20pm'
result = re.search(r'\b\d+(:\d+)?(am|pm)?\b', s).group()
print(result)
输出:

4:30am

目前为我工作的人:

import re

regex = '4:30am some other words maybe another time 3:20pm'

string = = re.findall('\d*:\d*[p][m]|\d*:\d*[a][m]', regex)
表达式本身是:

\d*:\d*[p][m]|\d*:\d*[a][m]

也许
\d.+?(am | pm |(?!\S))
\d[\d:]*(?:\S*(?:am | pm))?
对您有用。您能提供一套全面的测试用例吗?我没有考虑使用单词边界,它似乎涵盖了我提到的所有用例。非常感谢。我不确定
\b
是否是强制性的:它们的内部非常严格,不会匹配任何空间。