2

我将如何构造正则表达式,以便可以执行如下替换:

  • abcdef[Backspace][Backspace][Backspace]->abc
  • [Backspace][Backspace]->(空字符串)

目前,我正在尝试在循环中一个接一个地替换退格键。还有其他方法吗?

4

2 回答 2

3

首先想到的是.\[Backspace\],只要有匹配项,就在循环中用空字符串替换。然后\[Backspace\]全局替换为空字符串。

编辑:正如评论中提出的,当我们有太多退格时,答案不会很好。

作为一种解决方案,我们可以^\[Backspace\]在每次替换迭代之前用空字符串 替换所有内容.\[Backspace\]

假设用于分组的 Perl 规则,s/^(?:\[Backspace\])*//就可以解决问题。

于 2012-10-24T13:44:21.557 回答
1

只是为了完整起见,这里是一个使用负面后视的解决方案(您可能打算自己使用的解决方案):

(^|.(?<!\[Backspace]))\[Backspace]

并替换为空字符串。循环执行此操作。如果您使用的是 Java 或其他一些需要转义反斜杠的情况,请将两个反斜杠加倍。

于 2012-10-24T14:11:59.947 回答