【发布时间】:2015-02-09 12:11:26
【问题描述】:
我有这个要求 - 对于如下所示的输入字符串
8This8 is &reallly& a #test# of %repl%acing% %mul%tiple 9matched9 9pairs
我想去除匹配的单词边界(匹配对是 8 或 & 或 % 等),结果如下
This is really a test of repl%acing %mul%tiple matched 9pairs
这个用于配对的字符列表可能会有所不同,例如8,9,%,# 等,并且只有与每种类型的开头和结尾匹配的单词才会被删除这些字符,并且嵌入在单词中的相同字符保留在原处。
使用 Java 我可以使用 \\b8([^\\s]*)8\\b 的模式和 $1 的替换来捕获和替换所有出现的 8...8,但是我如何为所有类型的对吗?
我可以提供一个模式,例如\\b8([^\\s]*)8\\b|\\b9([^\\s]*)9\\b .. 等等,它将匹配所有类型的匹配对 *8,9,..),但是我如何指定一个“变量”替换组 -
例如如果匹配是 9...9,则替换应该是 $2。
我当然可以通过其中的多个来运行它,每个替换一个特定类型的对,但我想知道是否有更优雅的方式。
或者有完全不同的方法来解决这个问题?
谢谢。
【问题讨论】: