感谢所有可以帮助我的人。我需要删除字符串中以“{”开头并以“}”结尾的所有记录,包括括号。
我试过这样的事情:
value.replaceAll("{.}","")
value = value.replaceAll("\\{.*\\}",""));
由于{
和}
是特殊字符,您必须使用\\
它们来转义它们。
注意:您没有指定是否必须处理嵌套括号或一系列括号。上面的解决方案只是删除了所有字符,从{
到}
(也删除了括号本身)。
目前,您正在寻找其中只有一个字符的大括号,除非您没有转义大括号,这在正则表达式中具有特殊含义。所以应该是:\\{.*\\}
(*
is for: 匹配尽可能多的字符)。
但是如果你有一个像: 这样的输入{ab}cd{ef}
并且你想得到cd
,你需要使用一个非贪婪的操作符,否则你会匹配整个字符串。
在这种情况下,你可以试试这个:
value = value.replaceAll("\\{.*?\\}","");
花括号是正则表达式中的特殊字符,因此您必须对其进行转义。
value.replaceAll("\\{[^\\}]*\\}", "");
如您所见,您还必须确保要替换的子字符串中没有其他右大括号,以避免在字符串中有多个以“{”开头并以“}”结尾的记录时删除太多.
如果您有嵌套括号,这将不起作用,这里的其他解决方案也不起作用。
value = value.replaceAll("\\{.*\\}",""));
由于花括号是特殊字符。所以你可以试试这个。
尝试这个
String a="{hi}a";
String arr=a.replaceAll("\\{.*?\\}","");
System.out.println(arr);