1

文字列で繰り返される場合は、シーケンス「-~-~-」を削除したいのですが、それらが一緒になっている場合に限ります。複数の空白の正規表現の削除に基づいて正規表現を作成しようとしました:

test.replaceAll("\\s+", " ");

残念ながら私は不合格でした。誰かが正しい正規表現を書くのを手伝ってくれませんか? ありがとう。

例:

string test = "hello-~-~--~-~--~-~-"

出力:

こんにちは-~-~-

もう一つの例

string test = "-~-~--~-~--~-~-hello-~-~--~-~--~-~-"

出力:

-~-~-こんにちは-~-~-

4

3 に答える 3

2

正規表現は次のとおりです。

test.replaceAll("(-~-~-){2,}", "-~-~-")

replaceAll正規表現 (最初のパラメーター) に一致するすべての出現箇所を 2 番目のパラメーターに置き換えます。

式を()グループ化します。これは、 2 つ以上の出現-~-~-を意味します。{2,}

編集

@anubhavaが言ったように-~-~-、置換文字列に使用する代わりに$1、最初のキャプチャグループを後方参照する which を使用することもできます(つまり、で囲まれた正規表現の式())。

于 2013-11-11T15:22:58.257 に答える
1
test.replaceAll("(-~-~-)+", "-~-~-");
于 2013-11-11T15:16:31.627 に答える
0

これはあなたが必要とする正規表現です:

(-~-~-){2}
于 2013-11-11T15:19:21.173 に答える