首页 > 解决方案 > 您能否仅匹配括号内的单个字符以使用正则表达式进行替换?

问题描述

我有一个奇怪的情况,我必须使用的唯一真正的工具是 Notepad++ 没有一些繁重的工作,并且我有一个|分隔的文本文件,其中包含|我需要删除的文本中的 s。

我需要删除的每个|都在括号内,因此文本模式如下所示:

(123 | 456) (11.1 | 11.2)

...等等。

我的理想结果是删除 ()s 中包含的 |s 并替换为 -,因此:

(123 - 456) (11.1 - 11.2)

到目前为止,我有:

\(.*\|.*\)

匹配每组包含 | 的括号。可靠,但我想不出一种方法来匹配|自身进行替换。有任何想法吗?

标签: regexnotepad++

解决方案


使用您显示的示例,请尝试在记事本++中遵循正则表达式

找什么: ([^|]*)\|([^)]*\))

用。。。来代替: $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 ).

推荐阅读