regex - 使用正则表达式在标签中查找字符串
问题描述
我正在编辑一个包含以下信息的 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 标志(您没有指出您正在使用的语言/工具,所以我无法说明如何指定 - 它会有所不同)。
见现场演示。
推荐阅读
- python-3.x - 为什么我在运行此代码时会收到 AttributeError?
- swift - SwiftUI 不更新 ForEach 循环函数调用中的状态变量
- javascript - 使用 Material UI 和 React.js 正确显示步进器
- c++ - 更新控件时 Win32 窗口不重绘
- r - 如何从 p 值矩阵中获得紧凑的字母显示?
- sql - 找不到方法:'Microsoft.EntityFrameworkCore.Metadata.IEntityType Microsoft.EntityFrameworkCore.Metadata.INavigation.get_DeclaringEntityType()
- python - selenium 每次重新加载页面时检查某些元素的外观
- node.js - 节点包结构
- python - 有没有办法在不让他用 discord py 机器人输入任何内容的情况下向用户发送消息?
- python - Selenium Webdriver 在“for 循环”迭代中单击过时的按钮