在系统中,我收到错误日志,指出两个组件之间无法交换的消息。 此日志包含所有类型的消息,我想使用正则表达式删除一种特定类型的消息(直接在Notepad ++中)。
所有消息都具有相同的布局,只有括号内的部分可以包含不同的类型。如果文字" type1206"放在括号之间的某处,我想过滤那条完整的消息,从日期/时间戳20141011 ....开始。请参阅下面的示例消息:
20141022.125854.816
<env:Envelope xmlns:env">
<env:Header>
<node>Encap.150</node>
<type>error</type>
<dateAndTime>2014-10-22T10:58:54.815Z</dateAndTime>
<comment>Exception while processing message</comment>
<exception>
<message>No message layout configured for message of type1206. (Message: '02001410221058548094000004b6')</message>
<class>java.lang.Exception</class>
</exception>
</env:Header>
<env:Body>
<env:Envelope>
<env:Header>
<node>ConvertingFixedStringSplitter.PLCxx</node>
<type>data</type>
<msgRecvTime>1.413975534815E12</msgRecvTime>
<dateAndTime>2014-10-22T10:58:54.815Z</dateAndTime>
<umid>TcpipFromPLC.PLCxx_87305_2014-10-22T10:58:54.815Z</umid>
</env:Header>
<env:Body>02001410221058548094000004b6000000000000007f0</env:Body>
</env:Envelope>
</env:Body>
&#39;
不应删除所有其他邮件。我没有找到类型1206的任何问题,但是&#34;选择&#34;围绕它的完整信息。
答案 0 :(得分:0)
正则表达式应如下所示:
/<env:Envelope xmlns:env">.*type1206.*<\/env:Body>.*<\/env:Envelope>.*<\/env:Envelope>/Ugs
U代表Ungreedy,代表&#34;多行&#34;
但只有你确切知道从哪里开始以及何时结束你要删除的内容:)