日期:2014-05-18  浏览次数:20759 次

求一 正则表达式
请问用正则如何配匹出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 
%> 

请问我哪个地方写错了????????

------解决方案--------------------
[^% >]已经说明不可以为%或>,所以如果你的ASP代码中有%或>则不行了!
------解决方案--------------------
Java code
        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));
        }

------解决方案--------------------
大菜鸟 果然不同凡响 呵呵
正则很厉害啊 
佩服