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.我诺纳克,这是一个错误吗?你有没有收到类似的结果?