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