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)