首页 > 解决方案 > 使用正则表达式在标签中查找字符串

问题描述

我正在编辑一个包含以下信息的 KML 文件:

        <name>some name</name>
        <description> some description and search target</description>
        <styleUrl>#icon-960-DB4436</styleUrl>
        <Point>
          <coordinates>
            34.7661563,32.059198,0
          </coordinates>
        </Point>
      </Placemark> 

我正在尝试使用一个正则表达式,如果标签中存在某个目标字符串,它将捕获从开始到结束的所有信息。

我试过这个 <placemark>.*?search target.*?</placemark>

但它当然会捕获比我需要的更多的东西。

请帮忙?

标签: regexnotepad++

解决方案


使用负前瞻来限定点以</Placemark>将搜索限制在此类标记内。

要查找文本DB4436(来自您的示例),请使用:

<Placemark>((?!<\/Placemark>).)*DB4436((?!<\/Placemark>).)*<\/Placemark>

打开 DOTALL 标志(您没有指出您正在使用的语言/工具,所以我无法说明如何指定 - 它会有所不同)。

现场演示


推荐阅读