1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186:
Allmänhet fungerar FindEmailInString (StringToSearch som stränger) som stränger Dunkel sExp som stränger sExp = ”\ b [A-Z0-9. _%+-] +@ [A-Z0-9. -] + \. [A-Z] {2.4} \ b”, FindEmailInString rgxExtract (StringToSearch, sExp) Avsluta fungerar Allmänhet fungerar rgxExtract (valfria ByVal uppsätta som mål som varianten, _, Valfritt mönstra som stränger = "", _, Valfritt ByVal objekt som Long = 0, _, Valfritt CaseSensitive som Boolean = falskt, _, Valfria FailOnError som Boolean = True, _, Valfritt framhärda som Boolean = falsk) _, Som Variant 'Att matcha för stamgästuttryck fungerar passande för bruk 'i VB/A allmänt och ta fram in queries. 'Vid John Nurick. Uppdaterat 14 Jan 06. 'Tar ett sökande stränger (uppsätta som mål) och ett stamgästuttryck '(Mönstra) och ett valfritt objektargument. '- Om objektet utelämnas, och en substring av uppsätta som mål matcher mönstrar, ' retur som substring. '- Om mönstra inkluderar gruppera parenteser, en substring av uppsätta som mål ' matcher mönstrar, och objektet är ett heltal, går submatchen tillbaka ' specificerat av Objekt (första submatch är objekt 0). Om det inte finns ' nog submatches, ogiltiga retur. Negationen värderar av objektstart ' räkna med den sist submatchen. '- Om ingen match, ogiltiga retur. '- Retur som är ogiltiga på fel, om inte FailOnError är riktig. ' Matchar alltid mot det helt uppsätta som mål (dvs. globalt och ' Multiline var riktig). 'CaseSensitive matcher utan hänsyn till fall. 'Framhärda kontrollerar den sammanställde RegExpen anmärker huruvida 'remains i minne ordnar till för den nästa appellen till 'fungera, eller huruvida den ordnas av omgående. Detta 'hjälpmedlet fungera kan användas i queries utan att ha 'att skapa, sammanställa, använda och förstöra en nya RegExp anmärka för 'varje ror att bearbetas. Men det också hjälpmedel som anmärka 'har remains i minne efter queryen kört. Att att förstöra 'anmärka och frigör minnet, appell som detta fungerar en 'sista gång med inga argument. ', 'Kalla fungera med olika argument (e.g. ett nytt 'Mönstra) recompiles RegExpen anmärker, så 'fungera kan användas i olika queries. However där 'kan vara problem, om två trådar kallar fungera på 'samma tid. Const rgxPROC_NAME = ”rgxExtract”, Statisk elektricitetmalm som anmärker 'VBScript_RegExp_55.RegExp 'Statisk elektricitetförklaringhjälpmedel vi måste inte att skapa 'och sammanställa RegExpen anmärker varje singeltid 'fungera kallas. Dunkla oMatches som anmärker 'VBScript_RegExp_55.MatchCollection På felet GoTo ErrHandler rgxExtract = ogiltig 'standardretur värderar 'OBS: om FailOnError är falsk, går ogiltigt på fel tillbaka Om IsMissing (uppsätta som mål), därefter 'Denna är signalera som ska kasseras av malm Fastställd malm = ingenting Gå ut fungerar 'med standard värderar Avsluta om 'Skapa RegExpen anmärker, om nödvändigt Om malm är ingenting därefter Fastställd malm = CreateObject (”VBScript.Regexp”) Avsluta om Med malm 'Kontrollera huruvida strömargumenten (annat än uppsätta som mål), 'var olik från de som lagras i malm och uppdatera dem '(recompiling därmed regexen) om endast nödvändigt. Om CaseSensitive = .IgnoreCase därefter .IgnoreCase = inte .IgnoreCase Avsluta om . Globalt = True . Multiline = True ' Om Multiline <> . Multiline därefter ' . Multiline = Multiline ' Avsluta om Om mönstra <> . Mönstra därefter . Mönstra = mönstra Avsluta om Utför matchen, 'slutligen Om IsNull (uppsätta som mål), därefter rgxExtract = ogiltigt Annars Fastställda oMatches = oRE.Execute (uppsätta som mål), Om oMatches.Count > 0 därefter Om oMatches (0) .SubMatches.Count = 0 därefter 'Ingen () grupp mönstrar in: gå matchen tillbaka Om objekt < 0="" Then="">= oMatches.Count 'Realitetobjektet överskred numrera av matcher rgxExtract = ogiltigt Om FailOnError därefter Err.Raise 9 Avsluta om Case annars rgxExtract = oMatches (objektet) Avsluta valt Annars 'det finns en eller flera () fångade grupper mönstrar in 'gå den som tillbaka specificeras av Objekt Med oMatches (0) .SubMatches Om objekt < 0="" Then="">=. Räkning 'Realitetobjektet överskred numrera av submatches rgxExtract = ogiltigt Om FailOnError därefter Err.Raise 9 Avsluta om Det giltiga objektet för fallet annars 'numrerar rgxExtract =. Objekt (objekt) Avsluta valt Avsluta med Avsluta om Annars rgxExtract = ogiltigt Avsluta om Avsluta om Avsluta med 'Tidy upp, och det normala går ut Om att inte framhärda därefter fastställd malm = ingenting Gå ut fungerar ErrHandler: Om FailOnError därefter Med fela Välj fallet. Numrera 'Byt ut meddelandet ”för detdefinierade felet” för standard Fall 9: . Beskrivningen = ”subscripten ut ur spänner (objektet numrerar bedd” _, & ”var mer stor än numrera av fann matcher, eller än numrera av” _, & ”(...) gruppera/som fångar parenteser i mönstra).”, Fall 13: . Beskrivning = ”typmismatch, antagligen, därför att” _, & ”""en uppsätta som mål "" argument kunde inte konverteras till en stränga”, Fall 5017: . Beskrivning = ”syntaxfel i stamgästuttryck”, Fall 5018: . Beskrivning = ”oväntad quantifier i stamgästuttryck”, Fall 5019: . Beskrivning = ”förväntat ”]” i stamgästuttryck ", Fall 5020: . Beskrivning = ”förväntat ”)” i stamgästuttryck ", Fall annars Om malm är ingenting 'som missas därefter för att skapa Regexp, anmärka . Beskrivningen = ”kunde inte skapa VBScript.RegExp anmärker. ” & Err.Description Annars 'oväntat fel . Beskrivning = rgxPROC_NAME & ”: ” &. Beskrivning Avsluta om Avsluta valt Fastställd malm = ingenting . Lönelyft Err.Number, rgxPROC_NAME, _, rgxPROC_NAME & ”(): ” &. Beskrivning Avsluta med Annars 'kuggning tyst Err.Clear Fastställd malm = ingenting Avsluta om Avsluta fungerar