VSCode正则表达式检索:如何使用正则表达式匹配包含特定属性但排除另一个属性的HTML标签

示例:<vxe-column.+time(?!.*\bformatter\b).+
匹配结果:

这个正则表达式用于匹配类似 <vxe-column> 标签中包含 time 但不包含 formatter 的情况。让我们逐步解释每一部分的含义:
正则表达式:
Markup 全选
<vxe-column.+time(?!.*\bformatter\b).+解释:
- <vxe-column:- 这部分匹配以 <vxe-column开头的字符串。这是在匹配vxe-column标签的开头部分。
 
- 这部分匹配以 
- .+:- .:匹配任意字符(除了换行符)。
- +:匹配前面的字符一次或多次。这里的- .+意味着匹配任意字符,至少一个字符,用于处理- vxe-column标签的属性内容。
 - 这部分确保 - <vxe-column标签后面有一些内容(如标签的属性)。
- time:- 匹配标签内容中的 time字符串。这表示正在查找含有time的部分,可能是某个属性值或文本内容。
 
- 匹配标签内容中的 
- (?!.*\bformatter\b):- 这是一个负向先行断言,用于确保匹配的 time之后没有formatter。- (?!...):表示负向先行断言。意思是如果某个部分的后面出现了- formatter,则不匹配。
- .*:匹配任意字符零次或多次。
- \bformatter\b:完整匹配- formatter单词(- \b是单词边界符,确保匹配的是一个完整的单词)。
 
 - 这部分确保在匹配到 - time后,后续的内容中不包含- formatter,因此它只匹配不含- formatter的标签。
- 这是一个负向先行断言,用于确保匹配的 
- .+:- 再次匹配任意字符至少一个,用于确保匹配标签的其余部分。
 
总体作用:
这个正则表达式用于匹配 HTML 标签 <vxe-column>,并且在标签的属性或内容中:
- 必须包含 time字符串。
- 不能包含 formatter字符串。
示例匹配:
Markup 全选
<vxe-column prop="createdTime" />这行代码会被匹配,因为它包含 time,并且没有 formatter。
示例不匹配:
Markup 全选
<vxe-column prop="createdTime" formatter="formatTime" />这行代码不会被匹配,因为它包含 formatter,违反了负向先行断言的规则。
版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
post 张国生  
 
 

