Funzione pubblica FindEmailInString (StringToSearch come stringa) come stringa
sExp fioco come stringa
sExp = “\ b [A-Z0-9. _%+-] +@ [A-Z0-9. -] + \. [A-Z] {2.4} \ b„
rgxExtract di FindEmailInString (StringToSearch, sExp)
Funzione di conclusione
rgxExtract pubblico di funzione (obiettivo facoltativo di ByVal come variante, _
Modello facoltativo come stringa = "", _
Articolo facoltativo di ByVal come lungamente = 0, _
Con distinzione delle maiuscole e delle minuscole facoltativo come booleano = falso, _
FailOnError facoltativo come booleano = allinea, _
Facoltativo persistere come booleano = falso) _
Come variante
'Funzione di corrispondenza di espressione normale adatta ad uso
'in VB/A generalmente e nelle domande di accesso.
'Da John Nurick. 14 gennaio 06 aggiornato.
'Prende una stringa di ricerca (obiettivo) e un'espressione normale
'(Modello) e una discussione facoltativa dell'articolo.
'- Se l'articolo è omesso e una sottostringa dell'obiettivo abbina il modello,
' ritorni che sottostringa.
'- Se il modello comprende il raggruppamento delle parentesi, una sottostringa dell'obiettivo
' abbina il modello e l'articolo è un numero intero, restituisce il submatch
' specificato da Item (il primo submatch è articolo 0). Se ci non è
' abbastanza submatches, posizione di segnale minimo di ritorni. Valori negativi dell'inizio dell'articolo
' contando con l'ultimo submatch.
'- Se nessun fiammifero, ritorni annulla.
'- I ritorni annullano sull'errore a meno che FailOnError sia allineare.
' Abbina sempre contro l'intero obiettivo (cioè globale e
' A più linee essere allineare).
'Fiammiferi con distinzione delle maiuscole e delle minuscole senza riguardo al caso.
'Persistono i comandi se l'oggetto compilato di RegExp
'rimane nella memoria pronta per la chiamata seguente al
'funzione o se è disfatta di immediatamente. Ciò
'significa che la funzione può essere utilizzata nelle domande senza avere
'per generare, compilare, usare e distruggere un nuovo oggetto di RegExp per
'ogni fila che è procedata. Ma inoltre significa che l'oggetto
'i resti nella memoria dopo la domanda hanno funzionato. Per per distruggere
'obiettare e liberare la memoria, denominano questa funzione una
'ultima volta senza le discussioni.
'
'Denominando la funzione con differenti discussioni (per esempio un nuovo
'Il modello) recompiles l'oggetto di RegExp, così
'la funzione può essere utilizzata nelle domande differenti. Per quanto là
'possono essere i problemi se due filetti stiano denominando la funzione a
'lo stesso tempo.
rgxPROC_NAME di Const = “rgxExtract„
Minerale metallifero statico come oggetto 'VBScript_RegExp_55.RegExp
'Mezzi statici di dichiarazione non dobbiamo generare
'e compilare l'oggetto di RegExp ogni singolo tempo
'la funzione è denominata.
oMatches fiochi come oggetto 'VBScript_RegExp_55.MatchCollection
Sull'errore ErrHandler di avanzamento
valore di ritorno di difetto di posizione di segnale minimo = del rgxExtract '
'N.B.:: se FailOnError è falso, restituisce la posizione di segnale minimo sull'errore
Se IsMissing (obiettivo) allora
'Questo è il segnale disfare del minerale metallifero
Regolare il minerale metallifero = niente
Uscire la funzione 'con il valore di difetto
Concluder se
'Generare l'oggetto di RegExp se necessario
Se il minerale metallifero allora è niente
Regolare il minerale metallifero = CreateObject (“VBScript.Regexp„)
Concluder se
Con minerale metallifero
'Controllare se le discussioni correnti (tranne l'obiettivo)
'essere differente da quelli immagazzinati in minerale metallifero ed aggiornarle
'(quindi recompiling il regex) soltanto se necessario.
Se con distinzione delle maiuscole e delle minuscole = .IgnoreCase allora
.IgnoreCase = non .IgnoreCase
Concluder se
. Globale = allineare
. A più linee = allineare
' Se a più linee <> . A più linee allora
' . A più linee = a più linee
' Concluder se
Se modello <> . Modello allora
. Modello = modello
Concluder se
'Per concludere, eseguire il fiammifero
Se IsNull (obiettivo) allora
rgxExtract = posizione di segnale minimo
Altrimenti
Regolare i oMatches = oRE.Execute (obiettivo)
Se oMatches.Count > 0 allora
Se oMatches (0) .SubMatches.Count = 0 allora
'Nessun () gruppo nel modello: restituire il fiammifero
Se articolo < 0="" Then="">= oMatches.Count
'L'articolo positivo ha superato il numero dei fiammiferi
rgxExtract = posizione di segnale minimo
Se FailOnError allora
Err.Raise 9
Concluder se
Mettere altrimenti
rgxExtract = oMatches (articolo)
Estremità prescelta
Altrimenti 'ci sono uni o più () gruppi bloccati nel modello
'restituire quello specificato da Item
Con i oMatches (0) .SubMatches
Se articolo < 0="" Then="">=. Conteggio
'L'articolo positivo ha superato il numero dei submatches
rgxExtract = posizione di segnale minimo
Se FailOnError allora
Err.Raise 9
Concluder se
Mettere altrimenti 'il numero di articolo valido
rgxExtract =. Articolo (articolo)
Estremità prescelta
Estremità con
Concluder se
Altrimenti
rgxExtract = posizione di segnale minimo
Concluder se
Concluder se
Concluder con
'Riordinare ed uscita normale
Se non persiste il minerale metallifero allora regolato = niente
Uscire la funzione
ErrHandler:
Se FailOnError allora
Con errare
Selezionare il caso. Numero
'Sostituire “il messaggio di errore oggetto-definito„ di difetto
Caso 9: . Descrizione = “sottoscritto fuori portata (il _ chiesto di numero di articolo„
& “era maggior del numero dei fiammiferi trovati, o che il numero„ di _
& “(...) raggruppare/che blocca le parentesi nel modello).„
Caso 13: . Descrizione = “tipo disadattamento, probabilmente perché„ _
& “la discussione del "" dell'obiettivo del "" non ha potuto essere convertita in stringa„
Caso 5017: . Descrizione = “errore di sintassi nell'espressione normale„
Caso 5018: . Descrizione = “quantifier inatteso nell'espressione normale„
Caso 5019: . Descrizione = “preveduto “]„ nell'espressione normale "
Caso 5020: . Descrizione = “preveduto ")„ nell'espressione normale "
Caso altrimenti
Se il minerale metallifero è niente di allora 'non riuscito per generare l'oggetto di Regexp
. La descrizione = “non ha potuto generare l'oggetto di VBScript.RegExp. „ & Err.Description
Altrimenti 'errore inatteso
. Descrizione = rgxPROC_NAME & “: „ &. Descrizione
Concluder se
Concludere prescelto
Regolare il minerale metallifero = niente
. Alzare Err.Number, il rgxPROC_NAME, _
rgxPROC_NAME & “(): „ &. Descrizione
Estremità con
Altrimenti 'venire a mancare silenziosamente
Err.Clear
Regolare il minerale metallifero = niente
Concluder se
Concludere la funzione
|