regex - 使用 vim 转义特定模式的单引号
问题描述
例如考虑下面的行
'{"place":"buddy's home"}'
我只想替换单引号buddy's
。行首和行尾的单引号必须完好无损。所以结果线看起来像。
'{"place":"buddy\'s home"}'
可能有多行,每行中多次出现此类单引号。除了行的开头和结尾,我必须逃脱所有这些。
我可以使用 vim regex 找出这样的模式:/.'.
这种模式确保单引号被两个字符包围,并且不在行首或行尾。但是我在如何在所有地方更换y's
成时遇到了麻烦。y\'s
解决方案
如果正则表达式.'.
足够准确,那么您可以将所有出现的地方替换为:
:%s/.\zs'\ze./\\'/g
除了使用\ze
and\zs
你也可以使用组(...)
。不过,我发现这个版本的可读性略高一些。
请参阅:h /\zs
和:h /\ze
了解更多信息。
推荐阅读
- html - 在一个容器中设置表单方法和子元素的样式
- java - 使用 volley 将数据插入 MySQL
- c++ - 验证 Rcpp::Function 对象?
- c# - 我想使用 C# 代码恢复 SQL Server 数据库
- powershell - Powershell 添加 reg 密钥
- python - 从 SQL 语法到 SQLAlchemy 语法
- c# - 直接引用 Razor 类库程序集
- c# - C# - 在另一个方法中实现抽象或接口方法
- docker - Dockerfile 错误:standard_init_linux.go:207:exec 用户进程导致“没有这样的文件或目录
- ruby-on-rails - 找不到 redis_cache_store 的缓存存储适配器(无法加载此类文件 -- active_support/cache/redis_cache_store)