正则表达式以匹配Vim中的括号

时间:2020-05-22 06:42:24

标签: regex vim

假设我有以下文字:

new_item['uid']

我想捕获[ ... ]中的所有内容。因此,在这种情况下,请抓住'uid'。通常我可以使用类似的东西:

要对此进行匹配(从左方括号开始并得到所有内容,直到右方括号为止)。但是如果没有字符类或vim中否定的字符类,我该怎么做?

3 个答案:

答案 0 :(得分:1)

您可以使用.\{-}代替.*?进行惰性点匹配:

\[(.\{-})\]

答案 1 :(得分:1)

如果要使用(..)创建捕获组,则需要非常神奇的模式,否则必须像BRE一样转义()

因此,两者都在\1中给出了匹配的部分:

\[\([^]]*\)

和({\v告诉vim在非常神奇的模式下进行匹配)

\v\[([^]]*)

答案 2 :(得分:0)

除了其他答案,您可以使用\v\[\zs.{-}\ze\]仅突出显示\zs\ze中的文本,请参见:h \ze