我想使用正则表达式找到文本的特殊部分。例如,我有一个文本: 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
你能帮我做这个工作吗?
答案 0 :(得分:1)
我不擅长VB。但我想说matchkennfeld将是一个数组,其中包含与该组的匹配(就像其他语言中的那样)。因此,当检查Item(0)
时,我认为它与整个匹配匹配,而不是组。因此,更改它以检查子匹配将解决问题。
Set matchname = regx.Execute(matchkennfeld(0).SubMatches(0))
可能会解决问题。