/'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)
这不起作用的原因是因为+
必须转义原子才能在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.我用它所有的时间.