次のような置換を実行できるように、正規表現をどのように構築しますか?
abcdef[Backspace][Backspace][Backspace]
->abc
[Backspace][Backspace]
->(空の文字列)
現在、ループ内でバックスペースを1つずつ置き換えようとしています。別の方法はありますか?
次のような置換を実行できるように、正規表現をどのように構築しますか?
abcdef[Backspace][Backspace][Backspace]
->abc
[Backspace][Backspace]
->(空の文字列)現在、ループ内でバックスペースを1つずつ置き換えようとしています。別の方法はありますか?
最初に頭に浮かぶのは.\[Backspace\]
、一致する限り、ループ内の空の文字列に置き換えることです。\[Backspace\]
次に、グローバルに空の文字列に置き換えます。
編集:コメントで提起されているように、バックスペースが多すぎると答えはうまく機能しません。
解決策として、置換を繰り返す前に、すべて^\[Backspace\]
を空の文字列に 置き換えることができ.\[Backspace\]
ます。
グループ化のためのPerlルールを想定するとs/^(?:\[Backspace\])*//
、トリックを実行します。
完全を期すために、ネガティブルックビハインド(おそらく自分で使用するつもりだったもの)を使用したソリューションを次に示します。
(^|.(?<!\[Backspace]))\[Backspace]
そして、空の文字列に置き換えます。これをループで実行します。Javaを使用している場合、またはバックスラッシュのエスケープが必要なその他の状況がある場合は、2つのバックスラッシュを2倍にします。