Vim:正则表达式匹配尖括号内的单词?

ale*_*nco 1 regex vim

我想匹配尖括号内的单词(html标签):

<MatchedWord></MartchedWord>
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止:

/\v\<\w+\>
Run Code Online (Sandbox Code Playgroud)

问题是它与<>太多和它相匹配/.

该怎么做所以它只匹配这个词?

Ing*_*kat 5

你可以在文本之前和之后断言匹配,而不是通过Vim的特殊\zs(匹配开始)和\ze(匹配结束)原子在匹配中包括:

/<\/\?\zs\w\+\ze\/\?>
Run Code Online (Sandbox Code Playgroud)

\?在两边都包含了一个可选的()斜杠(例如</this><this/>.还要注意,这\w\+不是XML或HTML标记的完全正确的表达式(但它可以是一个足够好的近似值,具体取决于您的数据).

替代

对于大多数其他正则表达式引擎,您需要使用lookbehindlookahead来实现此目的.Vim也有(\@<=\@=),但语法更笨拙,匹配性能可能更差.