日期:2014-05-18  浏览次数:20785 次

正则表达式如何配对以下字符窜


String url = "CSDN论坛(研发(牛人)论坛地图)";


以上就是一个例子,我是想通过正则表达式把url中的括号以及括号里的内容都删掉
我用的正则表达式是

String tmp = url.replaceAll("\\([^\\)]*\\)", "")

但是这个只是匹配一对括号,如果遇到嵌套的情况就不好用了
请高手指点 如何去掉带有嵌套形式的括号
回帖即给分
先谢谢各位了
java 正则表达式

------解决方案--------------------
代码递归+正则


import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class StringSplite {

public String work(String word){

String regex = "\\([\\u4e00-\\u9fa5]*\\)";
String wordTmp = "";

Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(word);

if(m.find()){
// System.out.println(m.group());
wordTmp = word.replace(m.group(), "");
}else{
return word;
}
return work(wordTmp);
}

public static void main(String[] args) {

String word = "CSDN论坛(研发(牛人)论坛(牛人)地图)";
StringSplite ss = new StringSplite();

System.out.println(ss.work(word));

}

}


------解决方案--------------------
匹配换一下
匹配任意串



String regex = "\\([\\S]*\\)";