如何使用正则表达式查找<template>标签对之间的指定单词
针对
<template>标签内匹配this的正则方案 原正则失效原因
[this]属于字符集匹配规则,仅能单独匹配t、h、i、s四个单个字符,无法匹配连续的完整单词this- 默认配置下
.无法匹配换行符,无法覆盖<template>标签内存在多行内容的场景 - 原有分组规则仅能捕获连续的单个字符,无法定位到所有独立的
this实例
推荐正则写法
主流正则引擎(JavaScript、Python、Java等)可用:
/(?<=<template>)(?:.|\n)*?\bthis\b(?=(?:.|\n)*?<\/template>)/gs
规则说明
s修饰符:开启dotall模式,让.可以匹配换行符,适配标签内多行内容场景g修饰符:全局匹配,捕获所有符合要求的this而非仅第一个\b:单词边界限定,避免误匹配到包含this的长单词(如thistles、thisxxx等)- 前后的断言规则确保匹配到的
this一定在<template>和</template>标签范围内,不会命中标签外的内容
注意:上述正则仅适用于无嵌套
<template>标签的场景,如果存在标签嵌套,正则无法准确处理层级关系,建议使用HTML/XML解析器处理更稳妥。
低版本引擎适配方案
如果你的正则引擎不支持长度不定的后视断言,可使用分组捕获实现:
/<template>(?:.|\n)*?(\bthis\b)(?:.|\n)*?<\/template>/gs
提取捕获组1的内容即可得到目标this实例。
内容的提问来源于stack exchange,提问作者eozzy
相关产品推荐
相关产品推荐

