複数の文字を1つに置き換える正規表現

次のような文字列があるとします。

"abc%\%%%%"

複数の %%% を1つのに置き換えたいと思います。私は何かを試した

String st = "abc%\ %%%%"。replaceAll( "(%)\\ 1+"、 "$ 1");

しかし、それは "\ %%" "\%" に変えてしまいます。言い換えれば、私は複数の%を置き換えたいが、バックスラッシュを前に付けたものはそのままにしておきたい。

どの正規表現を使うべきですか? ありがとう

3

2 答え

試して、

String st = "abc%\\%%%%".replaceAll("([%])+","$1");
       st = "Not%%%%\\%%%%sure but%%%\\%%%%%try out".replaceAll("(\\\\)([%])+","$1$2");
2
追加された
私はしましたが、うまくいかなかったのです。 :(
追加された 著者 user113454,

これを試して

String st = "abc%\\%%%%";
String regex = "([\\\\]%)%+";
String result= st.replaceAll(regex,"\\\\%%");

結果はabc%\ %%です。

正確性をチェックしたい場合は、このステートメントを使用できます

 String result= st.replaceAll(regex,"\\\\%R");

結果はabc%\%Rです(バックラッシュの前に%が残っていることが確認されます)。

0
追加された