/'text': '.+'
在VIM中,我希望在两种情况下匹配'abc'和'a'来自'text':
'text': 'abc', 'url': 'http...'
'text': 'a', 'title': 'dog'
我想在冒号后的单引号中匹配至少一个字符。这似乎不起作用。
我明白了。这很有效!
/'brand': '[^']\+'
答案 0 :(得分:6)
这不起作用的原因是因为必须转义+
原子才能在vim的正则表达式中具有特殊含义。现在这意味着任何后跟文字加的东西。但是当转义时,它意味着至少有一个,但是尽可能多。所以你想要这个:
/'text': '.\+'
然而,这会产生一个新问题。 .+
将匹配尽可能多的字符,包括单引号。所以它最终匹配
abc', 'url': 'http...'
而不是
abc'
因此,您希望使用等同于+
的{em>非贪婪,即\{-1,}
。试试这个:
/'text': '.\{-1,}'
当然,您也可以打开 magic 选项并执行此操作:
/\v'text': '.{-1,}'
可以在vimregex.com找到有关vim正则表达式的精彩概述。我一直都在使用它。