Jawny Funkcja FindEmailInString (StringToSearch Sznurek) Sznurek
Ciemnawy sExp Sznurek
sExp = "\ B [A-Z0-9. _%+-] +@ [A-Z0-9. -] + \. [A-Z] {2,4} \ B"
FindEmailInString rgxExtract (StringToSearch, sExp)
Końcówka Funkcja
Jawny Funkcja rgxExtract (Fakultatywny ByVal Cel Jako Wariant, _
Fakultatywny Wzór Jako Sznurek = "", _
Fakultatywny ByVal Rzecz Długo = (0), _
Fakultatywny CaseSensitive Boolowski = Fałszywy, _
Fakultatywny FailOnError Boolowski = Prawdziwy, _
Fakultatywny Upierać się Boolowski = Fałszywy) _
Jako Wariant
'Miarowy wyrażeniowy dopasowywanie funkcja stosowny dla use
'w VB/A ogólny i w Dojazdowy zapytanie.
'John Nurick. Uaktualniony 14 Jan 06.
'Brać rewizja sznurek (Cel) i miarowy wyrażenie
'(Wzór), i fakultatywny Rzecz argument.
'- Jeżeli Rzecz pomijać i substring Cel dopasowanie Wzór,
' powrót który substring.
'- Jeżeli Wzór zawierać grupowanie nawias, substring Cel
' dopasowanie Deseniować, i Rzecz być integer, wracać the submatch
' precyzować Rzecz (pierwszy submatch być rzecz (0)). Jeżeli tam być
' dosyć submatches, powrót Nieobowiązujący. Negatywny wartość Rzecz początek
' liczyć z the ostatni submatch.
'- Jeżeli żadny dopasowanie, powrót Nieobowiązujący.
'- Powrót Nieobowiązujący na błąd jeśli FailOnError być Prawdziwy.
' Zawsze dopasowywać przeciw the całkowity Cel (i.e. Globalny i
' Być być Prawdziwy).
'Skrzynka dopasowanie niezależnie od skrzynka.
'Upierać się kontrola czy the kompilować RegExp przedmiot
'resztki w pamięć przygotowywać dla the następny wezwanie the
'funkcja lub czy ono disposed natychmiast. To
'znaczyć the funkcja móc używać w zapytanie bez
', i nowy RegExp przedmiot dla
'przetwarzać rząd. Ale ono także znaczyć że the przedmiot
'resztki w pamięć po the zapytanie biegać. The
'protestować i uwalniać the pamięć, dzwonić ten funkcja jeden
'ostatni raz bez argument.
'
'Dzwonić the funkcja z różny argument (e.g nowy
'Wzór) recompiles the RegExp przedmiot, w ten sposób
'the funkcja móc używać w różny zapytanie. Jakkolwiek tam
'móc problem jeżeli dwa nić dzwonić the funkcja przy
'the ten sam czas.
Const rgxPROC_NAME = "rgxExtract"
Statyczny kruszec Jako Przedmiot 'VBScript_RegExp_55.RegExp
'Statyczny deklaracja sposób my musieć
'i kompilować the RegExp przedmiot każdy pojedynczy czas
'the funkcja dzwonić.
Ciemnawy oMatches Jako Przedmiot 'VBScript_RegExp_55.MatchCollection
Na Błąd Rozpoczynający ErrHandler
rgxExtract = Nieobowiązujący 'Brak powrót wartość
'NB: jeżeli FailOnError być fałszywy, wracać Nieobowiązujący na błąd
Jeżeli IsMissing (Cel) Wtedy
'Kruszec być the sygnał dispose kruszec
Ustalony kruszec = Nic
Wyjście Funkcja 'z brak wartość
Kończyć Jeżeli
'Tworzyć the RegExp przedmiot jeżeli konieczny
Jeżeli kruszec Być Kruszec Wtedy
Ustawiać kruszec = CreateObject ("VBScript.Regexp")
Kończyć Jeżeli
Z kruszec
'Sprawdzać czy the aktualny argument (cel Cel)
'być różny od kruszec przechować w kruszec, i aktualizować
'(w ten sposób w ten sposób the regex) tylko jeżeli konieczny.
Jeżeli .IgnoreCase = .IgnoreCase Wtedy
.IgnoreCase = Nie .IgnoreCase
Kończyć Jeżeli
. Globalny = Prawdziwy
. Multiline = Prawdziwy
' Jeżeli Multiline <> . Multiline Wtedy
' . Multiline = Multiline
' Kończyć Jeżeli
Jeżeli Wzór <> . Wzór Wtedy
. Wzór = Wzór
Kończyć Jeżeli
'W końcu, wykonywać the dopasowanie
Jeżeli IsNull (Cel) Wtedy
rgxExtract = Nieobowiązujący
Inny
Ustalony oMatches = oRE.Execute (Cel)
Jeżeli oMatches.Count > (0) Wtedy
Jeżeli oMatches ((0)) .SubMatches.Count = (0) Wtedy
'Żadny () grupa w Wzór: wracać the dopasowanie
Jeżeli Rzecz < 0="" Then="">= oMatches.Count
'Pozytywny Rzecz przewyższać the liczba dopasowanie
rgxExtract = Nieobowiązujący
Jeżeli FailOnError Wtedy
Err.Raise 9
Kończyć Jeżeli
Pakować Inny
rgxExtract = oMatches (Rzecz)
Końcówka Wybiórka
Inny 'Tam być jeden lub więcej () schwytany grupa w Wzór
'wracać the jeden precyzować Rzecz
Z oMatches ((0)) .SubMatches
Jeżeli Rzecz < 0="" Then="">=. Obliczenie
'Pozytywny Rzecz przewyższać the liczba submatches
rgxExtract = Nieobowiązujący
Jeżeli FailOnError Wtedy
Err.Raise 9
Kończyć Jeżeli
Pakować Inny 'ważny Rzecz liczba
rgxExtract =. Rzecz (Rzecz)
Końcówka Wybiórka
Końcówka Z
Kończyć Jeżeli
Inny
rgxExtract = Nieobowiązujący
Kończyć Jeżeli
Kończyć Jeżeli
Kończyć Z
'Sprzątać wyjście i normalny wyjście
Jeśli nie Upierać się Wtedy Ustawiać kruszec = Upierać się
Wychodzić Funkcja
ErrHandler:
Jeżeli FailOnError Wtedy
Z Błądzić
Wybierać Skrzynka. Liczba
'Zamieniać the brak "protestować-definiować błąd" wiadomość
Skrzynka 9: . Opis = "Subscript z pasmo (the Rzecz liczba prosić" _
& "być większy niż the liczba dopasowanie znajdować, lub the liczba" _
& "(...)/nawias w the Wzór)."
Skrzynka 13: . Opis = "Typ niedopasowanie, prawdopodobnie ponieważ" _
& "the "" Cel "" argument móc nawracać smyczkowy"
Skrzynka 5017: . Opis = "Składnia błąd w miarowy wyrażenie"
Skrzynka 5018: . Opis = "Niespodziewany kwantyfikator w miarowy wyrażenie"
Skrzynka 5019: . Opis = ""]" W miarowy wyrażenie "
Skrzynka 5020: . Opis = "")" w miarowy wyrażenie "
Skrzynka Inny
Jeżeli kruszec Być Przedmiot Wtedy 'Nie Udać Się Regexp przedmiot
. Opis = "Móc VBScript.RegExp przedmiot. " & Err.Description
Inny 'Niespodziewany błąd
. Opis = rgxPROC_NAME & ": " &. Opis
Kończyć Jeżeli
Kończyć Wybiórka
Ustawiać kruszec = Nic
. Podnosić Err.Number, rgxPROC_NAME, _
rgxPROC_NAME & "(): " &. Opis
Końcówka Z
Inny 'Fail po cichu
Err.Clear
Ustalony kruszec = Nic
Kończyć Jeżeli
Kończyć Funkcja
|