对于下面的文本:
<% Execute request("a") %>
rs.execute "sss"下面的C#正则可以匹配第一行,但不允许匹配第二行:
(?mi)\b(?<!\.)execute\b目前需要在ASP中应用这样的正则,但ASP中好像不支持[color=#FF6600](?<!表达式)的表达方法有无对应的ASP下的表达方法呢?[/color]

解决方案 »

  1.   


    谢谢,但是它缺匹配了:rs  .   execute "www"这也是不允许的!
      

  2.   


    谢谢,现在想在ASP中运用,ASP好像不支持(?<!表达式)这样的语法。
      

  3.   

    (?i)([\r\n]|^)((?!\.\s*\bexecute\b).)+\b(execute)\b取分组3行不?
      

  4.   

    测试好像不行啊!其实目的是想对asp文件内容进行扫描,前面说的只是其中的一项扫描内容:允许 “对象.  execute ...”的操作方法,但不允许“execute ...若出现违例,则删除该文件。一切都不是问题,关键是“这个正则”如何来写,很头疼!
      

  5.   

    那换个思路(?i)(\.\s*)??\bexecute\b根据分组1是否捕获到内容来判断行不?
      

  6.   


    会破坏整个程序的结构,不到万不得已不愿采用。已找到解决的问题的正则啦:
    Function RegExpTest( strng,patrn)  
    Dim regEx, Match, Matches  ' 建立变量。  
    Set regEx = New RegExp  ' 建立正则表达式。  
    regEx.Pattern = patrn  ' 设置模式。  
    regEx.IgnoreCase = true  ' 设置是否区分字符大小写。  
    regEx.Global = False  ' 设置全局可用性。  
    RegExpTest=regEx.Test(strng) ' 检测是否有匹配
    End Functiontxt="待检测的asp文件的内容"
    if RegExpTest(txt,"[^\s\.][ \t]*\bexecute\b") then
    ' 违反规则,删除文件
    end if示例文件内容1
    ----------------
    <% execute request("a") '不允许执行 %>
    示例文件内容2
    ----------------
    <%
    execute request("a")    '不允许执行
    %>示例文件内容3
    ----------------
    <%
    rs.execute "update ..."   ' 允许正常执行
    %>
    示例文件内容4
    ----------------
    <%
    rs.    execute "update ..."   ' 允许正常执行
    %>示例文件内容5
    ----------------
    <%
    a=a+1   ' rs.
    execute request("a")   ' 不允许执行
    %>