Notepad ++正则表达式:搜索可能包含换行符的长字符串

时间:2017-08-11 09:02:03

标签: regex notepad++ newline multiline

给定一个包含100000多条日志消息的文件,如:

2017-08-10T14:49:09: Debug: D-UNK-000-000: [Event Processor] connectorStatus:   Pending
2017-08-10T14:49:09: Debug: D-UNK-000-000: [Event Processor] context:   <DataItem type="System.Availability.StateData" time="2017-08-04T01:10:59.9525690+02:00"><ManagementGroupId>{05120214-5C27-A4EE-D32B-09CB2239421C}</ManagementGroupId><Property Name="Details" VariantType="8">There are 1 messages attached



03.08.2017 21:00:12

Title: Mail sync issue



User Impact: Users are unable to sync emails using Apple Mail on their Mac computers.

</Property></DataItem>
2017-08-10T14:49:09: Debug: D-UNK-000-000: [Event Processor] context_ManagementGroupId: {05120214-5C27-A4EE-D32B-09CB2239421C}
2017-08-10T14:49:09: Debug: D-UNK-000-000: [Event Processor] context:   null
2017-08-10T14:49:09: Debug: D-UNK-000-000: [Event Processor] context_HealthServiceId:   390382B5-C177-0529-DDC0-F2969F667E49

每条日志消息都以一个以时间戳开头的新行开始。但是一些日志消息扩展到多行;在上面的例子中,见第二行包含&#34;上下文:&#34;然后是一些嵌入了多个换行符的任意xml。因此,在上面的示例中,恰好有5条日志消息。

我正在查找非常长的日志消息,比如超过15000个字符。

我可以使用Notepad ++搜索此模式(选项&#34; 。匹配换行&#34;已选择)逐步浏览所有相关日志消息:

context:(.+?)2017-0\d-\d\dT\d\d:\d\d:\d\d:

但是我没有延伸到它只会给我很长的。

我预计以下内容可行,但没有运气(它选择整个文件):

context:(.+?){15000,}2017-0\d-\d\dT\d\d:\d\d:\d\d:

如果使用Notepad ++无法做到这一点,我也愿意使用其他工具,包括linux盒子上的命令行。

没有必要,但如果简单可行:
搜索我所解释的内容,并将整个xml字符串替换为其长度(字符数)。

0 个答案:

没有答案