2013-06-03 2 views
0

정규 표현식을 사용하여 텍스트의 특정 부분을 찾고 싶습니다. KENNFELD TFSWNWRSA 4 4RegularExpression을 사용하여 텍스트의 특정 부분 추출하기

내가 KENNFELD이 텍스트 만 TFSWNWRSA 4 4하지 압축을 한 후 나는이 코드를 작성

를 원하지만 예를 들어 내가 좋아하는 텍스트를 모든 전체 행을 반환합니다.

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

[this] (http://regex101.com/r/qV5jJ5)와 같은 의미입니까? – HamZa

+0

하지만 이것으로 나는 완전한 텍스트를 가지고 있습니다. TFSWNWRSA 4 4 – TangoStar

+0

'm' 수정자를 사용하십시오. – HamZa

답변

1

VB에서 좋지 않습니다. 하지만 matchkennfeld는 그룹과 일치하는 항목을 포함하는 배열이 될 것이라고 말합니다 (다른 언어의 경우와 비슷합니다). 따라서 Item(0)을 확인할 때 그룹 전체가 아니라 전체 일치와 일치한다고 생각합니다. 따라서 하위 일치로 확인하도록 변경하면 문제가 해결됩니다.

Set matchname = regx.Execute(matchkennfeld(0).SubMatches(0))이 문제를 해결할 수 있습니다.

관련 문제