使用正则表达式提取文本的特殊部分

时间:2013-06-03 10:29:33

标签: regex vba

我想使用正则表达式找到文本的特殊部分。例如,我有一个文本: KENNFELD TFSWNWRSA 4 4

我想从此文本中仅提取 TFSWNWRSA 4 4 而不是 KENNFELD ,然后我想

我写了这段代码,但它返回所有总行:

Dim fso As New FileSystemObject
Dim ts As TextStream
Dim Name As String
Dim regx As New regexp
Dim matchkennfeld As MatchCollection
Dim matchname As MatchCollection

 Name = "D:/test_DC.txt"
 'Set regexp = CreateObject("vbscript.regexp")
 Set ts = fso.OpenTextFile(Name, ForReading)
 Do While Not ts.AtEndOfStream
  regx.Pattern = "KENNFELD\s+([A-Z 0-9]*)"
  Set matchkennfeld = regx.Execute(ts.ReadLine)
  If matchkennfeld.Count <> 0 Then
     regx.Pattern = "([A-Z 0-9]*)"
    ' MsgBox matchkennfeld.Item(0)
     Set matchname = regx.Execute(matchkennfeld.Item(0))
        For Each Match In matchname
           MsgBox Match
        Next Match
 End If
 Loop
你能帮我做这个工作吗?

1 个答案:

答案 0 :(得分:1)

我不擅长VB。但我想说matchkennfeld将是一个数组,其中包含与该组的匹配(就像其他语言中的那样)。因此,当检查Item(0)时,我认为它与整个匹配匹配,而不是组。因此,更改它以检查子匹配将解决问题。

Set matchname = regx.Execute(matchkennfeld(0).SubMatches(0))可能会解决问题。