客户端的正则比较容易,服务器端的没有写过,希望能用java的正则对象来实现如下功能
var s="<record>"
+"<name>张三</name>"
+"<age>23</age>"
+"<sex>男</sex>"
+"</record>"
+"<record>"
+"<name>李四</name>"
+"<age>23</age>"
+"<sex>男</sex>"
+"</record>"
+"<record>"
+"<name>王五</name>"
+"<age>23</age>"
+"<sex>男</sex>"
+"</record>"/*获取子匹配*/
var oReg1=/<name>(.*?)<\/name>/;
alert(s.match(oReg1)[1]);/*获取所有匹配*/
var oReg2=/<name>(.*?)<\/name>/g;
var result=s.match(oReg2)
.join("")
.replace(/<name>/g,"")
.replace(/<\/name>/g,"");
alert(result);
var s="<record>"
+"<name>张三</name>"
+"<age>23</age>"
+"<sex>男</sex>"
+"</record>"
+"<record>"
+"<name>李四</name>"
+"<age>23</age>"
+"<sex>男</sex>"
+"</record>"
+"<record>"
+"<name>王五</name>"
+"<age>23</age>"
+"<sex>男</sex>"
+"</record>"/*获取子匹配*/
var oReg1=/<name>(.*?)<\/name>/;
alert(s.match(oReg1)[1]);/*获取所有匹配*/
var oReg2=/<name>(.*?)<\/name>/g;
var result=s.match(oReg2)
.join("")
.replace(/<name>/g,"")
.replace(/<\/name>/g,"");
alert(result);
解决方案 »
- 项目中新浪编辑器出了问题,急!在线等!!!
- 急急急页面更新
- 菜鸟求解servlet路径问题
- ireport报表分页
- struts2.0+spring 3.0+hibernate3.3 中关于HibernateCallback()的问题
- 大家来帮我看看是什么错误
- Java Web开发技术大全——第03讲 Struts 2的Action
- struts-config抛异常Parsing error processing resource path /WEB-INF/struts-config.xml
- 如何将JSP的查询请求在数据库中查到值在新的JSP页面一一展现出来?
- Tomcat,我是如此爱你却恨不得删除你!你的刷新功能太不好!想装weblogic出错!怎么办?
- 比如有两个Hasmap,我想把两个合起来
- 有没有好的方法去合并两个List?????????
java.util.regex
这个包里面的两个类就应该知道怎么弄了
<name>(.*?)</name>第一个括号中的内容在js中用RegExp.$1就可以了
public static void main(String[] args) {
String str = "<record>" + "<name>张三</name>" + "<age>23</age>" + "<sex>男</sex>"
+ "</record>" + "<record>" + "<name>李四</name>" + "<age>23</age>" + "<sex>男</sex>"
+ "</record>" + "<record>" + "<name>王五</name>" + "<age>23</age>" + "<sex>男</sex>"
+ "</record>";
String[] strArray = getElementsByTag("name", str);
for (String ss : strArray) {
System.out.println(ss.replaceAll("<name>", "").replace("</name>", ""));
}
}
public static String[] getElementsByTag(String tagName, String str) {
Pattern p = Pattern.compile("<" + tagName + "[^>]*?((>.*?</" + tagName + ">)|(/>))");
Matcher m = p.matcher(str);
ArrayList<String> al = new ArrayList<String>();
while (m.find()) {
al.add(m.group());
}
String[] arr = al.toArray(new String[al.size()]);
al.clear();
return arr;
}
是这样吗?
matcher.group()为匹配结果,matcher.group(1)为第一个分组
以此类推,而且很可喜的是java中的正则居然支持向后预搜索(?<=、?<!),这
在js中并不支持,看来还是java的正则功能强大些
package com.test;import java.util.regex.*;public class MyRegExp {
public static void main(String args[]){
String sReg="(?<=<name>)(.*?)(?=</name>)";
String sRecord="<record>"
+"<name>张三</name>"
+"<age>23</age>"
+"<sex>男</sex>"
+"</record>"
+"<record>"
+"<name>李四</name>"
+"<age>23</age>"
+"<sex>男</sex>"
+"</record>"
+"<record>"
+"<name>王五</name>"
+"<age>23</age>"
+"<sex>男</sex>"
+"</record>";
Pattern pattern =Pattern.compile(sReg);
Matcher matcher=pattern.matcher(sRecord);
while(matcher.find()){
System.out.println(matcher.group(1));
} }
}