如何使用Regex匹配包含字符串"Apple"行内的首个HTML标签
正则匹配方案
你当前使用的^(?!.*(Apple)).*$正则逻辑是匹配不包含Apple字符串的行,不符合你的需求,可按以下方案调整:
方案1(支持零宽断言的正则引擎,直接匹配目标内容)
适用于PCRE、JavaScript ES2018+、Java 9+等支持正向预查的引擎,直接使用以下正则即可匹配到你要的首个标签:
^<[^>]+>(?=.*Apple)
正则逻辑说明
^锚定到行的起始位置<[^>]+>匹配从<开始到第一个>结束的完整内容,对应行内首个HTML标签(?=.*Apple)正向预查规则,要求当前行后续内容必须包含Apple字符串,且不会占用匹配字符,不会影响最终匹配结果
方案2(兼容低版本正则引擎,分组捕获获取内容)
如果你的运行环境不支持零宽断言,使用分组捕获的正则,提取第1个捕获组的内容即可:
^(<[^>]+>).*Apple.*$
测试验证
对示例行:
<div class="tn-atom" field="tn_text_1584898828640" target="_blank">Apple</div>
两个方案最终得到的结果都为你需要的:
<div class="tn-atom" field="tn_text_1584898828640" target="_blank">
注意:该方案仅适用于HTML标签属性中不包含
>字符的常规场景,符合绝大多数日常使用需求。
内容的提问来源于stack exchange,提问作者Artem Larin
相关产品推荐
相关产品推荐

