regex - 用于匹配字符串的 Vim 正则表达式

标签 regex vim

如何为 Vim 创建一个正则表达式,以便在一行上匹配多个双引号字符串,而不匹配两个双引号字符串之间的文本?该模式的一个限制是双引号字符串不能包含单引号。到目前为止,我想出了 /"\([^']\{-}\)"/匹配下面的字符串。但正如您所见,它将匹配第二行字符串之间的文本。正如您在第三行中看到的那样,我不能依赖字符串周围的空白区域。当然,它也需要与第四行一起使用。

  • “猫”被称为“富”
  • “猫”的名字是“foo”
  • x="猫粮"
  • x = "猫"
  • 最佳答案

    basically I want to retrieve the contents from within the double quotes. This way I can replace them with single quotes. It goes without saying that I do not want to replace double quotes for single quotes when there is a single quote inside



    我没有找到一种方法来编写一个简单的正则表达式来满足您的需要,但是使用 vim 的 :s有一种方法:
    %s/\v"([^"]*)"/\=stridx(submatch(1),"'")>=0?submatch(0):"'".submatch(1)."'"/g
    

    执行上述行后,您的示例文本将更改为:
    'cat' is called 'foo'
    "cat's" name is 'foo'
    x="cat's food"
    x = 'cat'
    

    关于regex - 用于匹配字符串的 Vim 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23560822/

    相关文章:

    regex - 在 Find 中使用正则表达式 (CentOS 6.7)

    javascript - JS正则表达式错误: Unterminated character class

    c#:删除一定大小的括号(如果存在,包括其内容)

    vim - Vim-NERDTree-如何在NERDTree插件中打开隐藏的文件夹(.name)?

    vim - 任何 Emacs 命令,如 vim 中的粘贴模式?

    regex - 为什么 nextgroup 不匹配没有尾随空格的换行符?

    javascript - Js key 限制但有点怜悯?

    python - 使用 strip 函数删除通过正则表达式获得的字符串的一部分

    基于行首的 Vim 匹配

    vim - 使用命令行 Vim 与 GUI Vim 的原因