2015-06-26 30 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())