Python 正则表达式:忽略空格并匹配下一个数字

Python 正则表达式:忽略空格并匹配下一个数字,python,regex,Python,Regex,我的正则表达式通过以下代码获取Jan 26 00:00:15: re.search(r'^(\w{3} \d{2} \d{2}:\d{2}:\d{2})', line).group(0) 字符串: Jan 26 00:00:15 111.111.11.12 pppoe,ppp,info 但删除数字“2”时,我有两个空格,这将返回一个错误,使用pythex分析此字符串: Jan 6 00:00:15 111.111.11.12 pppoe,ppp,info Jan 26 00:00:15

我的正则表达式通过以下代码获取
Jan 26 00:00:15

re.search(r'^(\w{3} \d{2} \d{2}:\d{2}:\d{2})', line).group(0)
字符串:

Jan 26 00:00:15 111.111.11.12 pppoe,ppp,info 
但删除数字“2”时,我有两个空格,这将返回一个错误,使用pythex分析此字符串:

Jan  6 00:00:15 111.111.11.12 pppoe,ppp,info
Jan 26 00:00:15 111.111.11.12 pppoe,ppp,info 

我忽略了这些空白:
^\w{3}[^”]
,有时我的一天有一个或两个数字。我如何计算它们?

您可以使用正则表达式范围说明符
{1,2}
来严格匹配前面标记的1到2次出现

做:

此外,我还使用了
(?:\d{2}:){2}
:这里,非捕获组
(?:\d{2}:)
匹配两个数字,后跟一个
,然后
{2}
匹配令牌两次——这是匹配
HH:MM
,这样我们就不必重复了。
\d{2}
之后匹配
SS

例如:

In [40]: [re.search(r'^\w{3}\s{1,2}\d{1,2}\s(?:\d{2}:){2}\d{2}', s).group() for s in l]
Out[40]: ['Jan 26 00:00:15', 'Jan  6 00:00:15']

这应该可以做到:

re.search(r'^(\w{3} +\d{1,2} \d{2}:\d{2}:\d{2})', line).group(0)

提示:当我需要正则表达式时,我会一直使用它。

我会在字符类中为第一个数字添加一个空格

re.search(r'^(\w{3} [ \d]\d \d{2}:\d{2}:\d{2})', line).group(0)
这样,它就严格符合格式,不能与如下内容匹配:
Jan 2 18:54:02


Jan 12 18:54:02

\w{3}\s+\d{1,2}
可能存在的副本
re.search(r'^(\w{3} [ \d]\d \d{2}:\d{2}:\d{2})', line).group(0)