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).

Questa classe è creabile.

Questa classe si comporta come un solo-lettura array.

Costanti
Anchored  
BadMagic  
BadOption  
BadUTF8  
BadUTF8Offset  
Callout  
Caseless  
DollarEndOnly  
DotAll  
Extended  
Extra  
Greedy  
MatchLimit  
MultiLine  
NoAutoCapture  
NoMatch  
NoMemory  
NoSubstring  
NoUTF8Check  
NotBOL  
NotEOL  
NotEmpty  
Null  
UTF8  
Ungreedy  
UnknownNode  

Metodi statici
FindAll  
Match  
Replace  

Proprietà
Count  
Error  
Offset  
Pattern  
SubMatches  
Subject  
Text  

Metodi
Compile  
Exec  

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:

brown (\S+)

e la stringa:

The quick brown fox slyly jumped over the lazy dog

la proprietà Testo dell'oggetto Regexp (o RegEx[0].Text) sarebbe:

brown fox

e la sua proprietà RegExp[1].Text restituirebbe il testo della prima submatch:

fox

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