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 张国生