如何在vim中搜索此模式?

时间:2017-07-06 23:03:25

标签: regex vim

/'text': '.+'

在VIM中,我希望在两种情况下匹配'abc'和'a'来自'text':

'text': 'abc', 'url': 'http...'
'text': 'a', 'title': 'dog'

我想在冒号后的单引号中匹配至少一个字符。这似乎不起作用。

我明白了。这很有效!

/'brand': '[^']\+'

1 个答案:

答案 0 :(得分:6)

这不起作用的原因是因为必须转义+原子才能在vim的正则表达式中具有特殊含义。现在这意味着任何后跟文字加的东西。但是当转义时,它意味着至少有一个,但是尽可能多。所以你想要这个:

/'text': '.\+'

然而,这会产生一个新问题。 .+将匹配尽可能多的字符,包括单引号。所以它最终匹配

abc', 'url': 'http...'

而不是

abc'

因此,您希望使用等同于+的{​​em>非贪婪,即\{-1,}。试试这个:

/'text': '.\{-1,}'

当然,您也可以打开 magic 选项并执行此操作:

/\v'text': '.{-1,}'

可以在vimregex.com找到有关vim正则表达式的精彩概述。我一直都在使用它。