Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 记事本++;正则表达式:搜索可能包含换行符的长字符串_Regex_Notepad++_Newline_Multiline - Fatal编程技术网

Regex 记事本++;正则表达式:搜索可能包含换行符的长字符串

Regex 记事本++;正则表达式:搜索可能包含换行符的长字符串,regex,notepad++,newline,multiline,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-0

给定一个包含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
2017-08-10T14:49:09:调试:D-UNK-000-000:[事件处理器]连接器状态:挂起
2017-08-10T14:49:09:调试:D-UNK-000-000:[事件处理器]上下文:{05120214-5C27-A4EE-D32B-09CB2239421C}附加了1条消息
03.08.2017 21:00:12
标题:邮件同步问题
用户影响:用户无法在Mac电脑上使用Apple Mail同步电子邮件。
2017-08-10T14:49:09:调试:D-UNK-000-000:[事件处理器]上下文管理组ID:{05120214-5C27-A4EE-D32B-09CB2239421C}
2017-08-10T14:49:09:调试:D-UNK-000-000:[事件处理器]上下文:null
2017-08-10T14:49:09:调试:D-UNK-000-000:[事件处理器]上下文\u HealthServiceId:390382B5-C177-0529-DDC0-F2969F667E49
每个日志消息都以时间戳开头的新行开始。但有些日志消息扩展到多行;在上面的示例中,请参见第2行,其中包含“context:”,然后是一些嵌入了多个换行符的任意xml。因此,在上面的示例中,正好有5条日志消息

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

我可以使用记事本++搜索此模式(选项“.matches newline”选中),逐步浏览所有相关日志消息:

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

但我没能扩展它只会给我长的

我原以为以下内容可以工作,但运气不佳(它选择了整个文件):

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


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


不需要,但如果容易做到:
搜索与我解释的内容相同的内容,并将整个xml字符串替换为其长度(字符数)。

您可以使用

(?s)context:(?:(?!2017-0\d-\d\dT\d\d:\d\d:\d\d:).){350,}
说明

  • (?s)
    -DOTALL模式打开(与
    匹配新行启用相同)
  • 上下文:
    -文本子字符串
  • (?:(?!2017-0\d-\d\dT\d:\d\d:){350,}
    -350或更多次(
    {350,}
    )未启动
    2017-0\d-\d\dT\d\d:\d\d:
    子模式序列的任何字符(
(?:(?!)*
就是所谓的

根据需要调整限制量词最小阈值


试试
(?s)上下文:(?:(?!2017-0\d-\d\dT\d\d:\d\d:\d\d:){350,}
然后将
350
调整到你的阈值。威克托,你是个天才:-)也许你可以解释一下这是怎么回事?我补充了一个答案,并做了一些解释。