java用正则表达式判定特殊字符是否,存在就替换的问题?

来源:百度知道 编辑:UC知道 时间:2024/06/07 05:09:14
我在String ss = "aabbcc[{dd}]eeff[{gg}]hhiijjkkll[{mmnn}]oopp";这个字符串,用正则表达式把[{}]这样的特殊字符过滤出来,就是把[{dd}]替换成dd,原来的字符串里面也变成aabbccddeeff...

至少有两种正则表达式的方法:

1、直接调用String类的replaceAll(String regex, String replacement)方法

代码:
String ss = "aabbcc[{dd}]eeff[{gg}]hhiijjkkll[{mmnn}]oopp";
ss.replaceAll("[\\[\\]\\{\\}]", "");//返回结果,可打印或返回
优点:简单
缺点:不具有通用性,需求变动则不适用,例如[{dd}]替换成DD

2、通过匹配规则来截取字符串

代码:
String ss = "aabbcc[{dd}]eeff[{gg}]hhiijjkkll[{mmnn}]oopp";
//正则表达式,表示由非[、]、{、}的任意字符构成
String tmp = "[^\\[^\\{^\\]^\\}.]";
//正则表达式,由5组构成第一组是普通字符串,第二组是"[{"字符串,第三组是普通字符串,第四组是"}]"字符串,第五组是普通字符串
Pattern pattern = Pattern.compile("(" + tmp + "*)(\\[\\{)(" + tmp + "*)(\\}\\])(" + tmp + "*)");
Matcher matcher = pattern.matcher(ss);
StringBuffer result = new StringBuffer();
while(matcher.find()) {
result.append(matcher.group(1) + matcher.