请问用正则如何配匹出ASP网页中所有的ASP代码,例如: 
<%'开始%> 
这里是html代码12345 
<% 
a="这里是asp代码%" 
response.write a 
%>
 
这里是html代码56789 
<% 
b="这里是asp代码2" 
response.write b 
%>
 即:得出 
<%'开始%> 
<% 
a="这里是asp代码%" 
response.write a 
%> 
<% 
b="这里是asp代码2" 
response.write b 
%> --------------------------------------------------------
参考:我用这个"<%((.|\r\n)[^%>]*)%>"可以得出 
<%'开始%> 
<% 
b="这里是asp代码2" 
response.write b 
%> 但是得不出 
<% 
a="这里是asp代码%" 
response.write a 
%> 请问我哪个地方写错了????????

解决方案 »

  1.   

    [^% >]已经说明不可以为%或>,所以如果你的ASP代码中有%或>则不行了!
      

  2.   

    试一下这个如何:
    <%((. ¦\r\n)[^(% >)]*)% >
      

  3.   

    StringBuffer sb = new StringBuffer("");
    sb.append("test \r\n");
    sb.append("<%  \r\n");
    sb.append("a=\"asfdsaf%\"  \r\n");
    sb.append("response.write a  \r\n");
    sb.append("%>  \r\n");
    sb.append("tttt  \r\n");
    sb.append("<%  \r\n");
    sb.append("b=\"2323423sdfasdf2\"  \r\n");
    sb.append("response.write b  \r\n");
    sb.append("%>\r\n"); Pattern p = Pattern.compile("<%(.|\r\n)*?(?=%>)%>");
    Matcher m = p.matcher(sb.toString());

    while(m.find()){
    System.out.println("1: "+m.group(0));
    }