regex - 将\n 替换为\n' '

标签 regex vim

我有一个这样的文件:

$ cat t.py 
'a\nb\n'

在文件中,将光标定位在第一行,我想使用 :s/ 到达

'a\n'
'b\n'

我怎样才能做到这一点?我已经尝试过了

:s/\\n/\n''

但最终结果是

'a^@''b^@'''

最佳答案

您可以在 vim 中使用此替换:

:%s/\(\\n\)\([^']\)/\1'\r'\2/g

说明:

  • %s/:替换开始
  • \(\\n\):匹配文字 \n 并在组 #1 中捕获
  • \([^']\):匹配非 ' 的字符并在组 #2 中捕获
  • /\1'\r'\2/:用反向引用 #1 + ' + 换行符 + ' 替换+ 反向引用#2

替换结果:

'a\n'
'b\n'

或者您可以在 vim 中使用非常神奇正则表达式并避免所有转义:

%s/\v(\\n)([^'])/\1'\r'\2/g

关于regex - 将\n 替换为\n' ',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66917057/

相关文章:

mysql - 如何替换子字符串?

ruby - 如何将 unicode 单词与 ruby​​ 1.9 匹配?

vim - 使用 Vim 映射键

vim - 在 Vim 命令中使用当前目录

regex - 在 SED 中使用变量

Python 正则表达式 "object has no attribute"

javascript - 正则表达式在 JavaScript 中包含至少包含一个字母且长度至少为 6 个字符的所有字符

vim - 在vim中定义颜色变量

vim - Vim中的:update和:w有什么区别?

vim - 如何在 Vim 中重置拆分?