如何在vim中搜索这个模式?

use*_*911 2 regex vim

/'text': '.+'
Run Code Online (Sandbox Code Playgroud)

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

'text': 'abc', 'url': 'http...'
'text': 'a', 'title': 'dog'
Run Code Online (Sandbox Code Playgroud)

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

我知道了.这有效!

/'brand': '[^']\+'
Run Code Online (Sandbox Code Playgroud)

DJM*_*hem 6

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

/'text': '.\+'
Run Code Online (Sandbox Code Playgroud)

但是,这会产生新问题.该.+会匹配尽可能多的字符可能的,包括单引号.所以它最终匹配

abc', 'url': 'http...'
Run Code Online (Sandbox Code Playgroud)

代替

abc'
Run Code Online (Sandbox Code Playgroud)

所以,你要使用非贪婪相当于+\{-1,}.试试这个:

/'text': '.\{-1,}'
Run Code Online (Sandbox Code Playgroud)

当然,你也可以启用魔术选项并执行此操作:

/\v'text': '.{-1,}'
Run Code Online (Sandbox Code Playgroud)

有关vim正则表达式的精彩概述,请访问vimregex.com.我用它所有的时间.