none
正則運算的問題 RRS feed

  • 问题

  • 問題如下:

    字串:  

    "plum * pear * BALL"

    要將以上字串轉成下面的正則

    regex :    

    plum & ".*" pear & ".*" BALL

    .*代表的是任何字元

    做這樣的正則我的應用是用來搜索匹配類似下面的集合 

    plum IS pear ON BALL

    plum ARE pear ON BALL

    下面是我目前寫的代碼   

     Public Sub main6()
    
            Dim regex As Regex = New Regex(" ")         ' Split on hyphens.
            Dim substrings() As String = regex.Split("plum * pear * BALL")
            Dim c As String = vbNullString
    
            For Each match As String In substrings
                If match = "*" Then
                    match = "'.*'"
                End If
    
                'Me.RichTextBox1.Text += match & vbCrLf
                c += match & " & "
            Next
            Dim c1 As String = c.Trim(" ")
            c1 = c1.Trim("&")
            c1 = c1.Trim(" ")
            Dim regex1 As Regex = New Regex(c1)
            Me.RichTextBox1.Text = c1
    
        End Sub
       

    目前這樣處理出來的regex 會變成

    plum & '.*' pear & '.*' BALL

    這樣的正則做匹配 好像會有問題呢?  本來應該是 " 符號 只能用 ' 符號 ..

    可是又不曉得如何將 '.*' 改成 ".*" 組進正則裡面.

    請問各位大大有無解法?



    • 已编辑 向恩 2012年6月4日 6:49
    2012年6月4日 6:42

答案

  • 解決了  原來用replace 就可以取代掉了 

    For Each match As String In substrings If match = "*" Then match = "'.*'" match=match.replace("'" ,"""")

    End If

    挺刁鑽的寫法..

    • 已标记为答案 向恩 2012年6月4日 12:02
    2012年6月4日 12:01