Vim:regex是否匹配尖括号内的单词?

Vim:regex是否匹配尖括号内的单词?,regex,vim,Regex,Vim,我想匹配尖括号内的单词(html标记): 这就是我到目前为止所做的: /\v\<\w+\> /\v\ 问题是它也与和/匹配 如何使它只与单词匹配?您不需要转义尖括号(方括号为[]),因为它们不是特殊字符。您可以使用捕获组 <\/?(.+)> 您不需要转义尖括号(方括号为[]),因为它们不是特殊字符。您可以使用捕获组 <\/?(.+)> 您可以通过Vim的特殊\zs(匹配开始)和\ze(匹配结束)来断言文本前后的匹配,而无需将其包含在匹配中: /

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


这就是我到目前为止所做的:

/\v\<\w+\>
/\v\
问题是它也与
/
匹配


如何使它只与单词匹配?

您不需要转义尖括号(方括号为[]),因为它们不是特殊字符。您可以使用捕获组

<\/?(.+)>

您不需要转义尖括号(方括号为[]),因为它们不是特殊字符。您可以使用捕获组

<\/?(.+)>

您可以通过Vim的特殊
\zs
(匹配开始)和
\ze
(匹配结束)来断言文本前后的匹配,而无需将其包含在匹配中:

/
我在两侧都添加了一个可选的(
\?
)斜杠(例如
)。还要注意的是,
\w\+
对于XML或HTML标记来说并不是一个完全正确的表达式(但它可能是一个足够好的近似值,具体取决于您的数据)

可供替代的
对于大多数其他正则表达式引擎,您需要使用lookback和lookahead来实现这一点。Vim也有这些功能(
\@您可以在文本前后断言匹配,而不必通过Vim的特殊
\zs
(匹配开始)和
\ze
(匹配结束)原子将其包含在匹配中:

/
我在两侧都添加了一个可选的(
\?
)斜杠(例如
)。还要注意的是,
\w\+
对于XML或HTML标记来说并不是一个完全正确的表达式(但它可能是一个足够好的近似值,具体取决于您的数据)

可供替代的
对于大多数其他正则表达式引擎,您需要使用lookbehind和lookahead来实现这一点。Vim也有这些功能(
\@在非Vim环境中,这是通过使用正向lookbehind和lookahead来实现的:

/(?<=<).*?(?=>)/
/(?//div id=“lt
正如您在最后一个示例中看到的,它并不完美,但是您在html上使用了正则表达式,所以


在非vim环境中,这是通过使用积极的向后看和向前看来实现的:

/(?<=<).*?(?=>)/
/(?//div id=“lt
正如您在最后一个示例中看到的,它并不完美,但是您在html上使用了正则表达式,所以



这些是尖括号,不是方括号!这些是方括号:
[]
@DevonParsons好的,固定。这些是尖括号,不是方括号!这些是方括号:
[]
@DevonParsons好的,修复了。这似乎与所有的匹配
我还没有使用Vim for RegEx,捕获组是如何处理的。我的解决方案是使用捕获最简单groups@mgamba:如果键入此项,则需要转义
/
;我已添加!@Jeanno:捕获组用于替换(使用
:替换
);它们对纯搜索没有帮助。@IngoKarkat是的,我的错误似乎与所有
都匹配。我没有将Vim用于正则表达式,如何处理捕获组。我的解决方案是使用捕获最简单groups@mgamba:如果您键入此项,则需要转义
/
;我已添加!@Jeanno:捕获组用于替换(使用
:替换
);它们对纯搜索没有帮助。@IngoKarkat是的,我的错误很明显OP是专门针对VIM的,这个答案是为未来的读者提供的。VIM也有正面的向后看和向前看:
\(@Ben我知道Vim有向前看和向后看,这个答案与Vim无关。显然OP是专门针对Vim提出的,这个答案是为未来读者提供的。Vim也有向前看和向前看:
\(@Ben我知道Vim有向前看和向后看,这个答案与Vim无关
<test>         // test
</content>     // /content
<div id="box"> // div id="box"
<div id="lt>"> // div id="lt