regex - 您能否仅匹配括号内的单个字符以使用正则表达式进行替换?
问题描述
我有一个奇怪的情况,我必须使用的唯一真正的工具是 Notepad++ 没有一些繁重的工作,并且我有一个|
分隔的文本文件,其中包含|
我需要删除的文本中的 s。
我需要删除的每个|
都在括号内,因此文本模式如下所示:
(123 | 456) (11.1 | 11.2)
...等等。
我的理想结果是删除 ()s 中包含的 |s 并替换为 -,因此:
(123 - 456) (11.1 - 11.2)
到目前为止,我有:
\(.*\|.*\)
匹配每组包含 | 的括号。可靠,但我想不出一种方法来匹配|
自身进行替换。有任何想法吗?
解决方案
使用您显示的示例,请尝试在记事本++中遵循正则表达式
找什么: ([^|]*)\|([^)]*\))
用。。。来代替: $1-$2
正则表达式解释:为上述正则表达式添加详细解释。
([^|]*) ##Creating 1st capturing group here, which has everything till | comes.
\| ##Matching literal | here.
([^)]*\)) ##Creating 2nd capturing group here, which has everything till ) here including ).
推荐阅读
- javascript - 设置日期/时间输入字段的默认视图,覆盖用户区域设置?
- python - 如果数字在数据框的行中,则更改数组的值
- gradle - 如何将表单数据文件附加到邮递员测试并通过纽曼在不同的开发环境中运行?
- python - 在视频分类问题中找到具有最大“权重”的帧
- datetime - 在 Elixir 中将日期时间转换为时间戳
- html - 单选按钮在 PC 上是圆形的,但在移动设备上是方形的
- node.js - Node8 和 Nginx Dockerfile
- variables - Twig 使用动态变量
- android - 使用 textButton 中的图标居中文本
- javascript - Rails 5:如何在 webpacker 中包含 JS 全局函数?