请帮助。我已经阅读了数十篇Stack Overflow文章和在线教程,无法弄清楚!
我需要一个正则表达式,该表达式将返回跨越多行的匹配,并且我不确定该怎么做。例如,文字是
1)2019年1月11日上午11:04 RF HQCSQT
John Doe,Construction,555-555-5555, 2) 11-JAN-2019 1:42 PM I ADD HQCSQT John Doe/Construction Worker Request El ectronic Add Wires: 7600SB=. Building c odes: , 3) 11-JAN-2019 1:54 PM I ADD STM003 John Doe/Construction Worker Request El ectronic Add Wires: 1430SBX=. Building codes: ,
有两个匹配项应来自上述字符串,即第2行和第3行,直到逗号(“,”)为止。参见下面的匹配示例。
2)11-JAN-2019 1:42 PM I ADD HQCSQT
John Doe/Construction Worker Request El ectronic Add Wires: 7600SB=. Building c odes: ,
所以我想捕获以开头的正则表达式模式
^\d\)\s+\d\d-\w+-\d+\s+\d+:\d+\s+\w+\s+I\s+ADD\s+(HQCSQT|STM003)
并以
的正则表达式结尾(,\s)$
注意:我测试了“(,\ s)$”,并且启用了多行选项后,行结束了。
答案 0 :(得分:0)
您已经在那里。您不能正确设置正则表达式选项。您需要同时使用SingleLine和MultiLine模式。
Dim input As String = "
1) 11-JAN-2019 11:04 AM I RF HQCSQT
John Doe,Construction,555-555-5555,
2) 11-JAN-2019 1:42 PM I ADD HQCSQT
John Doe/Construction Worker Request El
ectronic Add Wires: 7600SB=. Building c
odes: ,
3) 11-JAN-2019 1:54 PM I ADD STM003
John Doe/Construction Worker Request El
ectronic Add Wires: 1430SBX=. Building
codes: ,
"
Dim pattern As String = "^\d\)\s+\d\d-\w+-\d+\s+\d+:\d+\s+\w+\s+I\s+ADD\s+(HQCSQT|STM003).*?,\s$"
Dim matches As Integer = Regex.Matches(input, pattern, RegexOptions.Multiline Or RegexOptions.Singleline).Count
Console.WriteLine(matches) ' Outputs "2"
答案 1 :(得分:0)
似乎可以用双换行分隔:
Dim parts = Split(text, vbCrLf & vbCrLf)
For i = 0 To parts.Length Step 2
Debug.Print(parts(i) & vbCrLf & vbCrLf & parts(i + 1) & vbCrLf & "------------")
Next