从日志文件中删除包含特定内容的所有xml消息

时间:2014-10-24 07:04:59

标签: xml regex

在系统中,我收到错误日志,指出两个组件之间无法交换的消息。 此日志包含所有类型的消息,我想使用正则表达式删除一种特定类型的消息(直接在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;围绕它的完整信息。

1 个答案:

答案 0 :(得分:0)

正则表达式应如下所示:

/<env:Envelope xmlns:env">.*type1206.*<\/env:Body>.*<\/env:Envelope>.*<\/env:Envelope>/Ugs

U代表Ungreedy,代表&#34;多行&#34;

但只有你确切知道从哪里开始以及何时结束你要删除的内容:)

http://regex101.com/r/tC7dU4/3