【问题标题】:Search and replace apostrophes using regex in VI在 VI 中使用正则表达式搜索和替换撇号
【发布时间】:2013-07-13 19:48:32
【问题描述】:

我正在尝试搜索并替换所有出现的反斜杠,然后将单引号替换为一个反斜杠和引号。像这样:

Everyone\\\\\\\\\\\\\\\'s 到 VI 中的Everyone\'s

它还应该替换:blah\\\\\\\'\'blah\'\'

我不知道该怎么做。

试过了::%s/\\\+\'/\\'/ 但它只适用于第一个。

我也试过::%s/\\\+?\'/\\'/,但这不起作用。

正确的正则表达式应该是什么?

【问题讨论】:

  • 为什么Everyone.. 例子的结果没有斜线?你的要求是:place all occurrences of backslashes followed by a single quote to one backslash and quote.
  • 抱歉,这是一个拼写错误。

标签: regex vim vi


【解决方案1】:

这符合您的要求:

将所有出现的反斜杠后跟单引号替换为 一个反斜杠和引号

 %s/\\\+'/\\'/g

你的两个例子:

Everyone\\\\\\\\\\\\\\\'s -> Everyone\'s
blah\\\\\\\'\' -> blah\'\'

用 vim 7.3 测试过

【讨论】:

  • 谢谢,为我工作.. 堰不在夜间工作.. :^)
【解决方案2】:

这对我有用:

%s/[\\\\]*'/'/

请注意,代码标记将 '\' 的四个实例压缩为两个:括号内有四个反斜杠。

感谢修复,Rohit!

【讨论】:

    猜你喜欢
    • 2012-06-06
    • 1970-01-01
    • 2013-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-30
    • 1970-01-01
    相关资源
    最近更新 更多