我将如何构造正则表达式,以便可以执行如下替换:
abcdef[Backspace][Backspace][Backspace]
->abc
[Backspace][Backspace]
->(空字符串)
目前,我正在尝试在循环中一个接一个地替换退格键。还有其他方法吗?
我将如何构造正则表达式,以便可以执行如下替换:
abcdef[Backspace][Backspace][Backspace]
->abc
[Backspace][Backspace]
->(空字符串)目前,我正在尝试在循环中一个接一个地替换退格键。还有其他方法吗?
首先想到的是.\[Backspace\]
,只要有匹配项,就在循环中用空字符串替换。然后\[Backspace\]
全局替换为空字符串。
编辑:正如评论中提出的,当我们有太多退格时,答案不会很好。
作为一种解决方案,我们可以^\[Backspace\]
在每次替换迭代之前用空字符串 替换所有内容.\[Backspace\]
。
假设用于分组的 Perl 规则,s/^(?:\[Backspace\])*//
就可以解决问题。
只是为了完整起见,这里是一个使用负面后视的解决方案(您可能打算自己使用的解决方案):
(^|.(?<!\[Backspace]))\[Backspace]
并替换为空字符串。循环执行此操作。如果您使用的是 Java 或其他一些需要转义反斜杠的情况,请将两个反斜杠加倍。