/'text': '.+'
在 VIM 中,我想在两种情况下匹配 'text' 中的 'abc' 和 'a':
'text': 'abc', 'url': 'http...'
'text': 'a', 'title': 'dog'
我想匹配冒号后单引号中的至少一个字符。这似乎不起作用。
我明白了。这成功了!
/'brand': '[^']\+'
最佳答案
这不起作用的原因是 +
原子必须转义才能在 vim 的正则表达式风格中具有特殊含义。现在这意味着任何后跟一个文字加号。但是当转义时,它意味着至少一个,但尽可能多。所以你会想要这个:
/'text': '.\+'
但是,这会产生一个新问题。 .+
将匹配尽可能多的字符,包括单引号。所以它最终匹配
abc', 'url': 'http...'
代替
abc'
所以你想使用 +
的 non-greedy 等效项,即 \{-1,}
。试试这个:
/'text': '.\{-1,}'
当然,您也可以打开魔法选项并执行此操作:
/\v'text': '.{-1,}'
可以在 vimregex.com 找到关于 vim 正则表达式的很好的概述。 .我一直在用它。
关于regex - 如何在 vim 中搜索这种模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44960124/