java正则对内容进行分析替换
我们在项目中常用到java正则对文本内容进行分析替换,有时虽然只是简单的一行replace代码,却无不用到正则。这里java正则的语法将不再述说,重点说说如何对匹配的内容进行替换操作。
这里拿上一篇文章中的自定义标签作为例子来进行说明
?
下面是具体代码如何去匹配和替换
String regx = "\\{xxx:arclist([^\\}]*)\\}(.*?)\\{/xxx:arclist \\}";??Pattern p = Pattern.compile(regx);?? ??Matcher m = p.matcher(content); // content为你要分析的文本内容??String groupStr = null; // 匹配参数条件组??String groupStr1 = null; // 匹配内部属性标签??String[] paramsStr = null; // 获取参数数组??StringBuffer sb = new StringBuffer();?? ??StringBuffer sb_1 = new StringBuffer();?? ??? ??while(m.find()){?? ???? // 标签对获取数据,然后条件查询?????groupStr = m.group(1).trim(); // 去掉首尾空格???? groupStr = groupStr.replaceAll("\\s+"," "); // 把多个空格替换成一个???? paramsStr = groupStr.split(" "); // 以空格分组成一数组??????? /**??? * 这里的paramsStr 就是己获得的参数,扔给你获取数据的方法去解析并返回想要的结果集 listBean?? */? ??? ???? // 标签对内部内容???? groupStr1 = m.group(2);?? ???? String str_1 = "";???????????????????????????????????// 用于一条数据替换后的结果 ? Pattern p_1 = Pattern.compile("\\[xx:([^\\]]*\\]");?????? for( objectBean bean :listBean){?? ???????????? Matcher m_1 = p_1.matcher(groupStr1);?? ???????????? while(m_1.find()){?? ??????????????? /**??????? * 这里把每一个属性标签中应放的值value取出??????? */? ??????????????? // 把属性标签替换成相应的数据??????????????? if(value == null){?? ????????????????? m_1.appendReplacement(sb_1,"");?????????? ??????????????? }else{?? ????????????????? m_1.appendReplacement(sb_1,value.toString());?? ??????????????? }?? ???????????? }?? ??????? m_1.appendTail(sb_1); // 把属性标签替换后放入sb_1中 str_1 += sb_1; // 把一条数据替换后都入str_1中??????? sb_1.delete(0, sb_1.length()); // 这里清空内容是为下组标签对准备?? }?? ??? m.appendReplacement(sb, str_1);?? ??}?
?
这样我们就己把所要分析的内容己全部分析和替换完成了,sb就是分析和替换全部完成后的内容。