regex - 为什么在 vim 中任何字符都不匹配的正则表达式?
问题描述
我有一个正在用 vim 编辑的文件。我想删除_
后跟一个数字的任何字符。这是我正在编辑的内容:
some,file_1,file_2,field
groupA_1,/path/to/file1,/path/to/file2,this
groupB_1,/path/to/file1b,/path/to/file2c,that
groupA_2,/path/to/file1,/path/to/file2,this
groupB_2,/path/to/file1b,/path/to/file2b,that
我正在使用%s/.\_\d//
导致
some,file,file_2,field
groupA,/path/to/file1,/path/to/file2,this
groupB,/path/to/file1b,/path/to/file2c,that
groupA,/path/to/file1,/path/to/file2,this
groupB,/path/to/file1b,/path/to/file2b,that
请注意标题保留file_2
,并且A
保留B
。这是我的预期结果:
some,file,file,field
group,/path/to/file1,/path/to/file2,this
group,/path/to/file1b,/path/to/file2c,that
group,/path/to/file1,/path/to/file2,this
group,/path/to/file1b,/path/to/file2b,that
解决方案
您的正则表达式的问题是:
- 您没有使用该
g
标志,因此仅删除每行的第一次出现 \_\d
匹配一个数字,\_
被解释为一个特殊的结构,使下一个模式换行知道。所以,最终,你的模式就等于.\d
。
你想要的可以通过
%s/[[:upper:]]\?_\d//g
详情:
[[:upper:]]\?
- 一个可选的大写字母_
- 一个下划线\d
- 一个数字(用于\d\+
匹配一个或多个数字)。
推荐阅读
- python-3.x - Python aiohttp Azure Function ClientConnector 错误(在本地工作)
- r - 如何使用 rmarkdown 将带有句子的小标题转换为 Microsoft Word 中的项目符号
- html - 使用从 JSON 文件中获取的数据从 HTML 生成 PDF
- javascript - lit-html 中的异步事件处理程序
- c++ - 为基类和派生类启用共享指针,还在每个类的构造函数中获取 shared_from_this?
- c# - 'like' 运算符之前缺少操作数
- javascript - 条件订阅 rxjs
- java - 如何解决:antlr.CommonToken 不能转换为 antlr.Token?
- npm - 运行 ng add @angular/material 什么都不做
- haskell - 在新类型上派生 Show 时避免使用双引号