正则表达式,用于根据子标记值在父标记之间提取整个文本

时间:2017-05-16 01:04:50

标签: regex

我有一个包含如下数据的文本文件。

<message>
<tag1>1</tag1>
<tag2>Car</tag2>
</message>#@#
<message>
<tag1>2</tag1>
<tag2>Bus</tag2>
</message>#@#
<message>
<tag1>3</tag1>
<tag2>Car</tag2>
</message>#@#
<message>
<tag1>4</tag1>
<tag2>Truck</tag2>
</message>

我需要提取所有包含与给定值Ex:Car匹配的子标记的消息。如下所示。任何肝脏都很多

<message>
<tag1>1</tag1>
<tag2>Car</tag2>
</message>
<message>
<tag1>3</tag1>
<tag2>Car</tag2>
</message>

我在下面试过,但它返回的错误数据如下所示。非常感谢任何帮助,

<message>[\s\S]*?<tag2>Car<\/tag2>[\s\S]*?<\/message>


<message>
<tag1>1</tag1>
<tag2>Car</tag2>
</message>#@#
<message>
<tag1>2</tag1>
<tag2>Bus</tag2>
</message>#@#
<message>
<tag1>3</tag1>
<tag2>Car</tag2>
</message>

1 个答案:

答案 0 :(得分:0)

您可以使用以下正则表达式:

<message>\n.*\n.*?Car.*?\n<\/message>

Demo URL