2013-06-03 3 views
0

Я хочу найти специальную часть текста с использованием регулярных выражений. Например, у меня есть текст, как: KENNFELD TFSWNWRSA 4 4Извлечение специальной части текста с использованием RegularExpression

Я хочу, чтобы извлечь только 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

Вы имели в виду нечто вроде [этого] (http://regex101.com/r/qV5jJ5)? – HamZa

+0

, но с этим у меня есть полный текст Я хочу иметь только TFSWNWRSA 4 4 – TangoStar

+0

Пожалуйста, используйте модификатор 'm'. – HamZa

ответ

1

Я не очень хорош в VB. Но я бы сказал, что matchkennfeld будет массивом, который содержит совпадения вместе с группой (это похоже на другие языки). Поэтому при проверке Item(0) я думаю, что это соответствует всему матчу, а не группе. Поэтому изменение этого параметра для проверки совпадений Sub позволит устранить проблему.

Set matchname = regx.Execute(matchkennfeld(0).SubMatches(0)) может исправить проблему.

Смежные вопросы