使用正则表达式在标签中查找字符串

using regex to find a string in a tag

我正在编辑一个包含如下信息的 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>

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

有什么帮助吗?

</Placemark> 限定具有负前瞻性的点,以将搜索限制在此类标签内。

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

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

打开 DOTALL 标志(您没有指明您正在使用的 language/tool,所以我无法展示如何指定 - 它会有所不同)。

live demo