为了对SQL脚本进行分析,需要去除文本内容中的所有注释块和注释行,如
/**********
;aksdjfka/jsdflkjasd*lfk
asdklfj
*/
delete table1
/***
a;sdj*****faksdjflkasjd
adsfkj233jka
*/
delete table2
--;aksdjfklajsdfklj
exec procudure1而我需要的结果只是正文部分,如何做?

解决方案 »

  1.   

    补充:
    只想得到干净的文本delete table1delete table2exec procudure1----------------
    正确解答的另奉送50分
      

  2.   

    不懂正则,用常规的办法也可以,下面这点代码没测试
    Private Sub Command1_Click()
        
        Dim i       As Long
        Dim j       As Long
        Dim str     As String
        
        str = Text1.Text
        
        i = InStr(1, str, "/*")
        
        Do While i > 0
            
            j = InStr(i + 2, str, "*/")
            
            If j > 0 Then
                str = Left(str, i - 1) & Mid(str, j + 2)
            Else
                str = Left(str, i - 1)
            End If
            
            i = InStr(1, str, "/*")
        Loop
        
        i = InStr(1, str, "--")
        
        Do While i > 0
            j = InStr(i + 2, str, vbCrLf)
            
            If j > 0 Then
                str = Left(str, i - 1) & Mid(str, j)
            Else
                str = Left(str, i - 1)
            End If
            
            i = InStr(1, str, "--")
        Loop
        
        Text2.Text = str
        
    End Sub
      

  3.   

    首先:
    Function ReplaceTest(patrn, replStr) 
    Dim regEx, str1 ' 建立变量。 
    str1 =“/**********
    ;aksdjfka/jsdflkjasd*lfk
    asdklfj
    */
    delete table1
    /***
    a;sdj*****faksdjflkasjd
    adsfkj233jka
    */
    delete table2
    --;aksdjfklajsdfklj
    exec procudure1”
    Set regEx = New RegExp ' 建立正则表达式。 
    regEx.Pattern = patrn ' 设置模式。 
    regEx.IgnoreCase = True ' 设置是否区分大小写。 
    ReplaceTest = regEx.Replace(str1, replStr) ' 作替换。 
    End Function 
    call ReplaceTest((\r\n)+,"")
    得到去掉回车的结果然后:
    Function ReplaceTest(patrn, replStr) 
    Dim regEx, str1 ' 建立变量。 
    str1 = /**********;aksdjfka/jsdflkjasd*lfkasdklfj*/delete table1/***a;sdj*****faksdjflkasjdadsfkj233jka*/delete table2--;aksdjfklajsdfkljexec procudure1"
    Set regEx = New RegExp ' 建立正则表达式。 
    regEx.Pattern = patrn ' 设置模式。 
    regEx.IgnoreCase = True ' 设置是否区分大小写。 
    ReplaceTest = regEx.Replace(str1, replStr) ' 作替换。 
    End Function 
    call ReplaceTest((/(\*)+(.)*?(\*)/)|--;(.*)?(?=exec),"") 
    得到楼主所要的结果