2017-06-06 8 views
0

die unter regulären Ausdruck auf unter E-Mail-Anwendung Körper:VBA regex und Gruppen

(pls[a-zA-Z0-9 .*-]*) \(([A-Z 0-9]*)\) 

E-Mail-Körper:

pls18244a.lam64*fra-pth (PI000581) 
pls18856a.10ge*fra-pth (PI0005AW) 
pls25040a.10ge*fra-pth (IIE0004WK) 
pls27477a.10ge*fra-pth (WL050814) 
pls22099a.stm4*par-pth (PI0005TE) 

kehrt 5 Spiel, mit zwei Gruppen. Was ist das VBA-Skript, um Gruppen in jeder Übereinstimmung zu erhalten, indem eine inkrementelle Variable verwendet wird, um jede Übereinstimmungsgruppe in der Excel-Zeile zu kopieren?

+0

'match' Objekte eine' submatches' Sammlung haben, so dass Sie würde eine Schleife über, dass für jedes Spiel. –

Antwort

0

Keine Änderungen an Ihrem regulären Ausdrucksmuster. Unter Verwendung der folgenden Art und Weise, können Sie durch die Gruppen jedes Spiel durchlaufen:

str="pls18244a.lam64*fra-pth (PI000581)pls18856a.10ge*fra-pth (PI0005AW)pls25040a.10ge*fra-pth (IIE0004WK)pls27477a.10ge*fra-pth (WL050814)pls22099a.stm4*par-pth (PI0005TE)" 
Set objReg = New RegExp 
objReg.IgnoreCase=False 
objReg.Global=True 
objReg.Pattern = "(pls[a-zA-Z0-9 .*-]*) \(([A-Z 0-9]*)\)" 
Set objMatches = objReg.Execute(str) 
For Each match In objMatches    'The variable match will contain the full match 
    a= match.Submatches.Count   'total number of groups in the full match 
    For i=0 To a-1 
     MsgBox match.Submatches.Item(i) 'display each group 
    Next 
Next 
Set objReg = Nothing 
+0

Danke, (für jeden) Satz sollte Streichhölzer statt Match enthalten. und ich brauche 1stmatch.1stgroup und 1stmatch.2ndgroup und so weiter .. in getrennten Feldern? –

+0

bitte könnte irgendjemand dabei helfen? –

+0

Ich habe nicht verstanden, was du sagst? Du hast jetzt den ganzen Arbeitscode. Es zeigt beide Gruppen jedes Spiels an. Möchtest du das ganze Spiel anzeigen? – Gurman