RegExp (gb.pcre)
Questa classe rappresenta un'espressione regolare, con la quale è possibile eseguire ricerche di corrispondenza su varie stringhe e recuperare le corrispondenze secondarie (quelle parti della stringa dell'oggetto che corrispondono alle espressioni fra parentesi).
Costanti
Metodi statici
Proprietà
Metodi
Corrispondenze secondarie (SubMatche)
Una submatch è una parte del tuo modello racchiuso tra parentesi.
Per accedere alle submatch utilizza la proprietà Count e la matrice di accesso della classe RegExp.
Esempio
Ad esempio, data l'espressione regolare:
e la stringa:
The quick brown fox slyly jumped over the lazy dog
la proprietà
Testo
dell'oggetto Regexp (o RegEx[0].Text) sarebbe:
e la sua proprietà
RegExp[1].Text
restituirebbe il testo della prima submatch:
l'offset nella stringa è dato dalla proprietà Offset, 10 in questo caso.
Questo è solo un semplice esempio di ciò che le espressioni regolari possono fare per te quando analizzi l'input testuale; sono uno strumento molto potente. Ad esempio, la seguente espressione regolare estrarrà per te indirizzi email validi:
(?i)\b[a-z0-9._%\-]+@[a-z0-9._%\-]+\.[A-Z]{2,4}\b
Programma di esempio per analizzare l'output di vmstat -D:
Dim sDiskIO As String
Dim cVal As New Collection
Dim rMatch As New RegExp
' get disk I/O stats
Exec ["vmstat", "-D"] To sDiskIO
For Each sVal In ["total reads", "read sectors", "writes", "written sectors"]
rMatch.Compile("^\\s*(\\d+)\\s+" & sVal, RegExp.MultiLine)
rMatch.Exec(sDiskIO)
If rMatch.Count = 1 Then
cVal[Replace(sVal, " ", "_")] = rMatch[1].Text
Else
Error.Raise("Missing '" & sVal & "' in 'vmstat -D' output")
Endif
Next
Print "total reads: " & cVal!total_reads & " read sectors:" & cVal!read_sectors
Print "writes: " & cVal!writes & " written sectors: " & cVal!written_sectors
Vedi anche