String str = "<DATA>开始ABC结束</DATA>";详细点新手写正则表达式

解决方案 »

  1.   


    import java.io.*;
    import java.util.regex.*;
    public class TestMatch {
        public static String read(String filename) throws IOException {
    BufferedReader br = new BufferedReader(new FileReader(filename));
    String s;
    StringBuffer sb = new StringBuffer();
    while ((s = br.readLine()) != null) {
        sb.append(s + "\n");
    }
    br.close();
    return sb.toString();
        }
        public static void main(String[] args) throws IOException {  
            String sourceString = read(getFileName(TestMatch.class));//将这个文件用sourceString保存
    Pattern p = Pattern.compile(".*?<DATA>(.*?)</DATA>.*?", Pattern.DOTALL);
    /*
      这个文件作为测试数据 插入一些内容1 <DATA> aaa Random random = new Random(); int num =
      random.nextInt(10); out.print(num); request.setAttribute("a",num);
      session.setAttribute("a",num);
      request.getRequestDispatcher("/form/forword1.jsp").forward(request,response); </DATA>
      这个文件作为测试数据 插入一些内容2 <DATA> 这个文件作为测试数据 插入一些内容3 </DATA> 这个文件作为测试数据 插入一些内容4
       <DATA> 这个文件作为测试数据 插入一些内容5 </DATA> 这个文件作为测试数据 插入一些内容6
     */ System.out.println("-------------------------------------------------");
    Matcher m = p.matcher(sourceString);
    while (m.find()) {
        System.out.println(m.group(1));
    }    }
        static <T> String getFileName(Class<T> c) {//获得当前文件*.java的文件路径和文件名
    return "./src/" + c.getSimpleName() + ".java";// 注释;
        }
    }结果:(.*?)
     aaa Random random = new Random(); int num =
      random.nextInt(10); out.print(num); request.setAttribute("a",num);
      session.setAttribute("a",num);
      request.getRequestDispatcher("/form/forword1.jsp").forward(request,response); 
     这个文件作为测试数据 插入一些内容3 
     这个文件作为测试数据 插入一些内容5 
      

  2.   

    到底是ABC结束还是</DATA>结束没看明白
      

  3.   

    没看明白LZ的问题,想匹配什么?
    String regex = "(?i)<DATA.*?>(.*?)</DATA>";