需要帮助解析此模式的文件RH 09/27/08 11:49 11:49:00.024

时间:2010-03-01 18:47:33

标签: regex vb.net

尝试解析以RH空间和日期开头的记录的文本文件。我需要退回整条线。我希望在文件中找到大约6000个。任何帮助将不胜感激。

完整记录示例:

RH 09/27/08 11:49 11:49:00.224 COA292 H393 2664FB753 178 -54.82 8.98 C 431 264 13 040 34 24.45-074 58 57.93 H

文本文件片段:

  

ŒRH09/27/08 11:49 11:49:00.292 JBU521 L536 1555FA320 089 -24.47 6.32 8 275 219 13 040 38 56.79-074 1916.83ŒRH09/27/08 11:49 11:49: 00.280 BTA2094L063 4142FE145 044 -35.94 8.82 P 257 135 3 040 38 42.65-074 3444.99ŒRH09/27/08 11:49 11:49:00.372 1374479 479 1374FUNK 360 -44.41 16.89#385 241 040 44 33.76-074 48 06.66 ŒRH09/27/08 11:49 11:49:00.456 1274230 230 1274FUNK -01 -46.61 24.18#13 031 040 51 07.41-074 5312.90ŒRH09/27/08 11:49 11:49:00.540 EJA691 S083 3354FC56X 108 -26.95 18.12 C 293 283 13 040 49 51.03-074 2604.43ŒRH09/27/08 11:49 11:49:00.576 COA768 H592 1560FB753 029 -16.03 11.96 4 242 322 13 040 46 22.69-074 10 09.52 H ŒRH09/27/08 11:49 11:49:00.620 N3663B S211 3472FBE10 020 -22.72 19.23 5 161 228 10 040 51 54.68-074 2058.46ŒRH09/27/08 11:49 11:49:00.684 N45002 S522 3525FPA31 030 -21.66 21.79 A 161 165 8 040 54 38.81-074 2023.63ŒRH09/27/08 11:49 11:49:00.776 BTA2296L418 2615FE145 104 -21.82 28.5 C 323 357 13 041 01 08.25-074 2239.48ŒRH09/27/08 11:49 11:49:00.832 CJC3304L450 2256FDH8D 070 -25.09 38.17 P 242 208 3 041 09 46.94 -074 2951.57ŒRH09/27/08 11:49 11:49:00.836 N721AF S517 1553FPC12 111 -15.1 23.29 4 198 273 13 040 57 37.15-074 1224.13ŒRH

谢谢!

2 个答案:

答案 0 :(得分:2)

^.*RH \d\d/\d\d\/\d\d.*$

将匹配包含RH,空格和由斜线分隔的三个两位数组的行。

在VB.NET中,为了迭代字符串中的所有匹配项:

Dim RegexObj As New Regex("^.*RH \d\d/\d\d/\d\d.*$", RegexOptions.Multiline)
Dim MatchResults As Match = RegexObj.Match(SubjectString)
While MatchResults.Success
    ' matched text: MatchResults.Value
    ' match start: MatchResults.Index
    ' match length: MatchResults.Length
    MatchResults = MatchResults.NextMatch()
End While

答案 1 :(得分:1)

你发布了一个长字符串,所以你可以使用“RH”上的split函数拆分“RH”,然后迭代这些项目,拆分空格并使用IsDate()检查第一个元素,例如假设“strContents”是一个长串样本。

data=Split(strContents,"RH")
For i=LBound(data) To UBound(data)
  s = Split(data(i)," ")  
  If IsDate(s(1)) Then
    WScript.Echo "RH"&data(i)
  End If 
Next

IsDate()检查有效日期。