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);
%>就是匹配被<% %>包围的,包括多行情况下,就是上面的也会匹配。单行的会写

解决方案 »

  1.   

    public static List<String> parser(String html, String rex) {
    int i = 0;
    List<String> l = new ArrayList<String>();
    Pattern p = Pattern.compile(rex);
    Matcher m = p.matcher(html);
    while (m.find()) { if (m.group(1)!=null){
    l.add(m.group(1));
    }
    i = 1;
    }
    if (i == 0) {
    l.add("");
    }
    return l;
    }
    String html="页面内容";
    html=html.replace=("\r\n","").repalce("<%","\r\n<%").replace("%>","%>\r\n");
    List<String> hh=parser(html,"<%([^<%>]*)%>");
    hh.get(0);
      

  2.   

    Pattern.compile("<%([^%]+)%>")或者StringUtils.substringBetween(str,"%", "%")
      

  3.   


    String test = "<%\n"
            + "aaa\n"
            + "Random random = new Random();\n"
            + "int num = random.nextInt(10);\n"
            + "out.print(num);\n"
            + "request.setAttribute(\"a\",num);\n"
            + "session.setAttribute(\"a\",num);\n"
            + "request.getRequestDispatcher(\"/form/forword1.jsp\").forward(request,response);\n"
            + "%>";
    Matcher m = Pattern.compile("(?s)<%(.*?)%>").matcher(test);
    if (m.find()) {
    System.out.println(m.group(1));
    }
    混分路过..
      

  4.   

    这个行<%([\s|\S]*)%>, “.”居然和空白字符匹不上啊,才发现
      

  5.   

    这个可能不严谨吧,"<% %>"中间不能出现"%"吗?
      

  6.   

    <%([^<%>]*)%>
    上面用的这个就很好
      

  7.   

    这个简单,只要让.可以匹配换行即可:Pattern.compile("<%(.+?)%>",Pattern.DOTALL)
      

  8.   

    自我更正一下,刚才试了,“.”能和部分空白字符匹配,但是和"\n"不行,有谁能说说"\n"和"\r"的区别?
    顺便问大家一下,我昵称改完了怎么显示不出来呢,有谁知道?
      

  9.   


    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(".*?<%(.*?)%>.*?", Pattern.DOTALL);
    /*
      这个文件作为测试数据 插入一些内容1 <% 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); %>
      这个文件作为测试数据 插入一些内容2 <% 这个文件作为测试数据 插入一些内容3 %> 这个文件作为测试数据 插入一些内容4
       <% 这个文件作为测试数据 插入一些内容5 %> 这个文件作为测试数据 插入一些内容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) {//获得当前文件的文件路径
    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