regex - 如何在 vim 中搜索这种模式?

标签 regex vim

/'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/

相关文章:

regex - 用于在 ColdFusion 9 中删除字符串中数值周围的引号的正则表达式

Python 简单的正则表达式

Vim - 轻松编辑过滤结果

vim - 在 Vim 中解释算术计算中的小数点

vim - Vim 中不区分大小写的标签搜索

linux - 当使用 `C-P` 自动完成单词时,如何防止 Vim 跳转到下一行?

python - 是否可以从 Python 中使用 re2?

python - 对 findall() 列表进行切片以获取值

arrays - 使用 Perl 比较一组字符串和一个文件

vim - 如何在vim中剪切整行并粘贴?