如何使用正则表达式环视功能匹配复杂HTML模式下的指定内容
Sublime Text 正则匹配HTML指定片段解决方案
可用正则表达式
直接复制以下表达式到Sublime Text的搜索框即可匹配到目标内容:
(?<=<div class="exg"><div><strong class="syn">[^<]+<\/strong><span class="syn">(?:,[^,]+){4}),[^<]+(?=<\/span><\/div>)
匹配逻辑说明
- 前置定位部分:
(?<=<div class="exg"><div><strong class="syn">[^<]+<\/strong><span class="syn">(?:,[^,]+){4})是正向肯定回顾环视,精准定位到第5个逗号的左侧位置:- 先匹配固定的
div.exg、strong.syn结构,用[^<]+兼容匹配任意长度的单词内容,比你原写法中的\w+容错性更高 (?:,[^,]+){4}表示匹配4组「逗号+非逗号内容」的组合,刚好跳过前4个逗号及对应同义词,定位到第5个逗号的起始位置
- 先匹配固定的
- 目标匹配部分:
,[^<]+匹配第5个逗号开头,后续所有非<的字符,刚好覆盖到</span>标签之前的所有内容 - 后置校验部分:
(?=<\/span><\/div>)是正向肯定先行环视,确保匹配内容不会溢出到</span></div>之外的范围
可选替换方案
如果需要对匹配内容做替换操作,可使用分组写法:
(<div class="exg"><div><strong class="syn">[^<]+<\/strong><span class="syn">(?:,[^,]+){4}),[^<]+(<\/span><\/div>)
替换时用$1[替换内容]$2即可保留前后结构,只修改目标部分。
内容的提问来源于stack exchange,提问作者user17038038
相关产品推荐
相关产品推荐

