2015-06-26 62 views
0

我想創建一個返回一個或多個字符串匹配的正則表達式,它驅使我堅果。與非打印字符的正則表達式問題

(?<=\x03).*?(?=\r) 

以上應該是查找ETX(char 3)的開始字符和回車的結束字符。

我想要每個開始和結束字符「塊」之間的文本。

我在做什麼錯?

+0

你是如何使用正則表達式?什麼告訴你它不起作用?你在一些編程代碼或某個編輯器中使用它嗎?另外,請張貼一些文字進行測試。 –

+0

正則表達式就是你說的。但是,你是什麼意思開始和結束「塊」?有'SOH,STX,ETX,EOT'控制代碼。也許你需要'(?<= \ x03)。*?(?= \ x04)' – sln

+0

我希望文本只在ascii char 3和ascii char 13之間。 –

回答

0

其實不理我,它確實有效。認爲在調試期望爲零的匹配屬性期間,我感到困惑。一個小測試證明它是可以的(在VB中)。

Dim TestString1 As String = Chr(3) & "Some Text to Extract 1" & Chr(13) 
    Dim TestString2 As String = Chr(3) & "Some Text to Extract 2" & Chr(13) 
    Dim TestString3 As String = Chr(3) & "Some Text to Extract 3" & Chr(13) 

    Dim TestString As String = TestString1 & " random noise " & TestString2 & " more random noise " & TestString3 
    Dim Matches As MatchCollection = Regex.Matches(TestString, "(?<=\x03).*?(?=\r)") 

    Dim Index As Integer = 0 
    Dim result As New StringBuilder 
    result.Append("No of Matches found = " & Matches.Count & vbCrLf & vbCrLf) 
    For Each m As Match In Matches 
     Index += 1 
     result.Append(Index & ": " & m.Groups(0).Value & vbCrLf) 
    Next 

    MessageBox.Show(result.ToString())