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_Msdn_Dngrep - Fatal编程技术网

Regex 正则表达式,提取选择文本

Regex 正则表达式,提取选择文本,regex,msdn,dngrep,Regex,Msdn,Dngrep,我对微软的(正则表达式)表示怀疑。我有一个在这种模式下写入的日志文件 2017-02-20 15:58:45.442 - [XYZ] 155 RADIO_TRAIN_TO_TRACK_INITIATION_COM_SESSION .VAR1p .VAR2o .VAR3i

我对微软的(正则表达式)表示怀疑。我有一个在这种模式下写入的日志文件

2017-02-20 15:58:45.442 - [XYZ] 155 RADIO_TRAIN_TO_TRACK_INITIATION_COM_SESSION
                                  .VAR1p
                                  .VAR2o
                                  .VAR3i
                                  .VAR4u
2017-02-20 15:58:46.432 - [XYZ]   32 RADIO_TRACK_TO_TRAIN_CONFIGURATION_DETERMINATION
                                  .VAR1
                                  .VAR2
                                  .VAR3
                                  .VAR4
                                  .VAR5
                                  .VAR6
2017-02-20 15:58:48.541 - [XYZ] 158 RADIO_TRAIN_TO_TRACK_INITIATION_COM_SESSION
                                  .VAR1x
                                  .VAR2c
                                  .VAR3v
                                  .VAR4f
                                  .VAR5d
                                  .VAR6s
我的问题是:如何从2017-02-20 15:58:45.442-[XYZ]155中提取所有文本。。。to.VAR4u(包括消息155的所有文本),以及消息158的所有文本(时间戳包括)

我已经写了这段代码,但它没有正确运行

(?<=\[XYZ] \b155\b(?:(?!\n\d{4}-\d{2}-\d).)*?\n {3,}\.)|(?<=\[XYZ] +\b158\b(?:(?!\n\d{4}-\d{2}-\d).)*?\n {3,}\.)

(?DnGrep工具使用了一个奇怪的.NET正则表达式实现:一旦使用了前瞻限制,最后一行就不匹配。它一定是一个bug

不管怎样,有效的方法是

(?m)^\d{4}-\d{2}-\d{2} \d{2}:[\d.:]+ - \[(?:RBC] +\b24|TRENO] \b156)\b(?:(?!\n\d{4}-\d{2}-\d).)*\.\w+[^\r\n]*
选中多行和点作为换行符复选框

\.\w+[^\r\n]*
部分是匹配最后一行的非空白部分所必需的(
\.
匹配一个点,
\w+
-1+字字符,
[^\r\n]*
将匹配除CR和LF之外的一个或多个符号,可以用
(?-s:.*)-一个修饰符组替换,其中“点为换行”应禁用(代码>)


此部分-
\[(?:RBC]+\b24 | TRENO]\b156)
-用于避免重复整个模式(如您在评论中所做的)。这将匹配
[
,然后匹配
RBC]
+空格+24或
TRENO 156
(两者都作为整个单词,因为模式后有
\b
)(5)5[5[5[5 5[5 5[5 5[5 5[5 5 5[5 5 5[5 5[5 5 5[5 5[5 5 5[5 5[5 5 5[5 5[5 5 5[5 5 5[5 5 5[5 5 5 5[5 5 5 5[5 5 5[5 5[5 5 5[5[5 5[5[5 5[5 5 5 5 5 5 5]b...[5 5]可能[5 5]可能没有DNGRP的工作经验.虽然.虽然没有DNGRP的经验.虽然.虽然.虽然.虽然.虽然.虽然在DNGRP.虽然.虽然.虽然.虽然.在DNGRP方面,我没有任何工作经验.虽然.虽然.虽然.在DNGRP.虽然.虽然.在DNGRP.虽然.我没有任何工作.虽然.在DNGRP.但.虽然.虽然我没有经验.在DNGRP.我没有.虽然.虽然.在DNGRP.我有.在DNGRP.我诺纳克,这是一个错误吗?你有没有收到类似的结果?