私を助けることができるすべての人に感謝します。「{」で始まり「}」で終わる文字列内のすべてのレコードを角かっこを含めて削除する必要があります。
私はこのようなことを試しました:
value.replaceAll("{.}","")
value = value.replaceAll("\\{.*\\}",""));
{
と}
は特殊文字であるため、 を使用してエスケープする必要があります\\
。
注意: ネストされたブラケットまたは一連のブラケットを処理する必要があるかどうかを指定しませんでした。上記の解決策は、単にすべての文字を削除するだけです, from {
to }
(また、括弧自体も削除します).
現時点では、正規表現で特別な意味を持つ中かっこをエスケープしていないことを除いて、正確に 1 つの文字を含む中かっこを探しています。したがって、次のようにする必要があります: \\{.*\\}
(の*
目的: できるだけ多くの文字に一致)。
しかし、: のような入力があり{ab}cd{ef}
、取得したいcd
場合は、非貪欲な演算子を使用する必要があります。そうしないと、文字列全体に一致します。
その場合、これを試すことができます:
value = value.replaceAll("\\{.*?\\}","");
これを試して
String a="{hi}a";
String arr=a.replaceAll("\\{.*?\\}","");
System.out.println(arr);
value = value.replaceAll("\\{.*\\}",""));
中括弧は特殊文字なので、これを試すことができます。
中括弧は正規表現の特殊文字であるため、エスケープする必要があります。
value.replaceAll("\\{[^\\}]*\\}", "");
ご覧のとおり、文字列に "{" で始まり "}" で終わるレコードが複数ある場合に削除しすぎないようにするために、置換する部分文字列に他の右中括弧がないことも確認する必要があります。 .
ネストされたブラケットがある場合、これは機能しません。ここの他のソリューションも機能しません。