客户端的正则比较容易,服务器端的没有写过,希望能用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);

解决方案 »

  1.   

    即然你懂正则的话,看看
    java.util.regex 
    这个包里面的两个类就应该知道怎么弄了
      

  2.   

    简单的还可以,比如格式验证什么的,但我不知道如何使用子匹配比如
    <name>(.*?)</name>第一个括号中的内容在js中用RegExp.$1就可以了
      

  3.   


    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;
    }
    是这样吗?
      

  4.   

    谢谢楼上几位,敲代码的时候写错了一个索引,把问题搞清楚了
    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));
    } }
    }