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
|