我有一个名为“strtosearch2”的字符串,如下所示:
[02112017 072755 332][1][ERROR]> ----Message : IDC_NO_MEDIA
[02112017 072755 332][1][INFO]> ----
[02112017 104502 724][1][ERROR]> ----Message : DEV_NOT_READY
[02112017 104502 724][1][INFO]> ----
[02112017 104503 331][1][ERROR]> ----Message : DEV_NOT_READY
[02112017 104503 331][1][INFO]> ----
我想提取只有“ERROR”行的日期。我写了我的正则表达式如下:
down2Date= re.findall(r'\[(.*?)\s\d{6}\s\d{3}\]\[\d\]\[ERROR\]',strtosearch2,re.DOTALL)
输出如下:
02112017
02112017 072755 332][1][INFO]> ----
[02112017
02112017 104502 724][1][INFO]> ----
[02112017
我的目标输出:
02112017
02112017
02112017
我怎样才能解决这个问题?。谢谢
试试这个:
您可以将模式锚定在行/字符串的开头,并移除
re.DOTALL
修饰符:参见regex demo
使用
re.DOTALL
,.
匹配任何字符,包括换行字符使用
(?m)
,^
匹配每行的开头,而不仅仅是整个字符串的开头另外,
\s
可以匹配换行符,因此您可能希望使用[^\S\r\n]
而不是它来只匹配水平空格相关问题 更多 >
编程相关推荐