Fråga : Perl-upprepning utfärdar

Se fäst för att kodifiera.  Denna är den huvudsakliga delen av mitt Perl-program.  Är här min data.txt sparar:

TYPE: C:\Users\ddecker\Desktop\D/>ad \ tiffs \ filename.tif: arkivet för
TIFF på offset 0x10eb4
avbildar bredd: 1728 avbilda längden: upplösning för 2376
: 200 200 PIXEL/bitar för inch
/tar prov: kompressionsintrig för 1
: Photometric tolkning för CCITT-grupp 4
: minut-är-white
FillOrder: lsb-till-msb
dokumentet: ”Standart mata in "
avbildar beskrivning: ”konverterade PBM sparar " riktning för
: ro bästa 0, lhs
för kolonn 0 tar prov/PIXELet: 1
ror/remsan: Planar konfiguration för 2376
: singeln avbildar plane
TYPE: C:\Users\ddecker\Desktop\D/>ad \ tiffs \ filename2.tif: arkivet för
TIFF på offset 0x4aac
avbildar bredd: 1728 avbilda längden: upplösning för 2376
: 200 200 PIXEL/bitar för inch
/tar prov: kompressionsintrig för 1
: Photometric tolkning för CCITT-grupp 4
: minut-är-white
FillOrder: lsb-till-msb
dokumentet: ”Standart mata in "
avbildar beskrivning: ”konverterade PBM sparar " riktning för
: ro bästa 0, lhs
för kolonn 0 tar prov/PIXELet: 1
ror/remsan: Planar konfiguration för 2376
: singeln avbildar plane
TYPE: C:\Users\ddecker\Desktop\D/>ad \ tiffs \ filename3.tif: arkiv för
TIFF på Subfiletyp för offset 0x8
: (0 = 0x0)
avbildar bredd: 124 avbilda längden: upplösning för 124
: 31 31 PIXEL/bitar för inch
/tar prov: kompressionsintrig för 8
: None
Photometric tolkning: Programvara för RGB-color
: ”¼"
tar prov/PIXELet: 3
ror/remsan: Planar konfiguration för 55
: singeln avbildar plane

Basically som programet går igenom, och fester varje delar upp eller ”kvarteret” mellan varje ”TYP: ” delar upp.  Så everytime programet ser ”TYP: ”, det fester det som en ny ”uppsättning”, och utför den sedda kodifiera i perlen code.

If som du ser kommentarerna, där är någon information för att kontrollera för fel.  Mitt problem är faktumet att, när programet startar ut med all nödvändig information, men därefter understödjakvarteret har saknad information, då den fungerar inte.  Ta denna data.txt tar prov (olikt från över, till exempel; filename2.tif är saknad tar prov/PIXELet.):

TYPE: C:\Users\ddecker\Desktop\D/>ad \ tiffs \ filename.tif: arkivet för
TIFF på offset 0x10eb4
avbildar bredd: 1728 avbilda längden: upplösning för 2376
: 200 200 PIXEL/bitar för inch
/tar prov: kompressionsintrig för 1
: Photometric tolkning för CCITT-grupp 4
: minut-är-white
FillOrder: lsb-till-msb
dokumentet: ”Standart mata in "
avbildar beskrivning: ”konverterade PBM sparar " riktning för
: ro bästa 0, lhs
för kolonn 0 tar prov/PIXELet: 1
ror/remsan: Planar konfiguration för 2376
: singeln avbildar plane
TYPE: C:\Users\ddecker\Desktop\D/>ad \ tiffs \ filename2.tif: arkivet för
TIFF på offset 0x4aac
avbildar bredd: 1728 avbilda längden: upplösning för 2376
: 200 200 PIXEL/bitar för inch
/tar prov: kompressionsintrig för 1
: Photometric tolkning för CCITT-grupp 4
: minut-är-white
FillOrder: lsb-till-msb
dokumentet: ”Standart mata in "
avbildar beskrivning: ”konverterade PBM sparar " riktning för
: ro bästa 0, lhs
för kolonn 0 ror/remsan: Planar konfiguration för 2376
: singeln avbildar plane
TYPE: C:\Users\ddecker\Desktop\D/>ad \ tiffs \ filename3.tif: arkiv för
TIFF på Subfiletyp för offset 0x8
: (0 = 0x0)
avbildar bredd: 124 avbilda längden: upplösning för 124
: 31 31 PIXEL/bitar för inch
/tar prov: kompressionsintrig för 8
: None
Photometric tolkning: Programvara för RGB-color
: ”¼"
tar prov/PIXELet: 3
ror/remsan: Planar konfiguration för 55
: singeln avbildar plane

Normal som tillverkas för programet, är efter:

Processing filename.tif
Processing filename2.tif
Processing filename3.tif

However, när saknaden datan från ovannämnt det bör vara:

Processing filename.tif
[FEL]: Ta prov/PIXELdata för filename2.tif inte found.
[info]: filename.tif bearbetades inte, för många errors.
Processing filename3.tif
Error loggar saved.

HOWEVER, det gör inte detta, tillverkad är: hjälpmedlet för

Processing filename.tif
Processing filename2.tif
Processing filename3.tif

Which, det, när den startar ut med ett godarekord, och slår därefter ”bjöd” eller ”för saknade data” ett rekord, det som funderare det är bra data för något, resonerar och fester det som goda och bearbetar datan.  Om jag tar bort ALLT från ”TYP: … FILENAMEN… och TIFF-arkivet på offset 0x4aac”, från ett rekord, DÄREFTER den ser felen.  Gör ingen avkänning.  Se detta exempel:

TYPE: C:\Users\ddecker\Desktop\D/>ad \ tiffs \ filename.tif: arkivet för
TIFF på offset 0x10eb4
avbildar bredd: 1728 avbilda längden: upplösning för 2376
: 200 200 PIXEL/bitar för inch
/tar prov: kompressionsintrig för 1
: Photometric tolkning för CCITT-grupp 4
: minut-är-white
FillOrder: lsb-till-msb
dokumentet: ”Standart mata in "
avbildar beskrivning: ”konverterade PBM sparar " riktning för
: ro bästa 0, lhs
för kolonn 0 tar prov/PIXELet: 1
ror/remsan: Planar konfiguration för 2376
: singeln avbildar plane
TYPE: C:\Users\ddecker\Desktop\D/>ad \ tiffs \ filename2.tif: arkiv för
TIFF på offset 0x4aac
TYPE: C:\Users\ddecker\Desktop\D/>ad \ tiffs \ filename3.tif: arkiv för
TIFF på Subfiletyp för offset 0x8
: (0 = 0x0)
avbildar bredd: 124 avbilda längden: upplösning för 124
: 31 31 PIXEL/bitar för inch
/tar prov: kompressionsintrig för 8
: None
Photometric tolkning: Programvara för RGB-color
: ”¼"
tar prov/PIXELet: 3
ror/remsan: Planar konfiguration för 55
: singeln avbildar tillverkad plane

The är som följer:

Processing filename.tif
[FEL]: Bredd för filename2.tif inte found.
[FEL]: Längd för filename2.tif inte found.
[FEL]: Upplösning för filename2.tif inte found.
[info]: filename2.tif bearbetades inte, för många errors.
Processing filename3.tif
Error loggar saved.

So, i stort, när INGA data är närvarande för ett rekord, det fungerar, men, när 1 eller mer värderar (men inte ALLA) är saknad för ett rekord, som är nödvändigt för tillverkat, det fester det, som inga errors.

Can någon skjulet några tänder på this.
> för
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:
" codeBody " " notpretty class= " för $infile = ”data.txt”; #$infile = $batOutput; Tillverkad ## sparar handtag (öppna), öppna (OUT1, ”> \!”. $state.$status. ”INFO.txt”) eller dör ”kan inte att öppna \!”. $state.$status. ”INFO.txt: $! ”; öppna (OUT2, ”> \!”. $state.$status. ”INFOspdsht.txt”) eller dör ”kan inte att öppna \!”. $state.$status. ”INFO.txt $! ”; öppna (ERRLOG, ”> \! errors.log”) eller dör ”kan inte öppna! errors.log $! ”; ##trycktitelrader till spdsht sparar tryck OUT2 ”; ; ; ; Whitespace; ; DPI ReSize; ; ; \ n”; Filename för tryck OUT2 ”; Komp; AlphCnl; Foto; Wid; Len; Res 0; x0; ; ; MB \ n”; ##konfigurationdata för tillverkade maskera data mitt %config = ( ”LZW-” => ”färgar”, ”Lempel-Ziv & för den walesiska kodningen” => ”färgar”, ”CCITT grupperar 4” => ”bkwhts”, ”CCITT grupperar kodnings” => ”bkwhts” för 4 telefax, ”Inga” => ”inga”, ”inga” => ”inga”, ”RGB färgar” => ”färgar”, ”minut-vara-vit” => ”bkwhts”, ”minut-vara-svärta” => ”bkwhts”, ”paletten färgar (RGB från colormap)” => ”färgar”, ”Upplösnings” =>sub { min @r = splittring (/,/, förskjutning); 0] =~s \ D//g för $r [; 1] =~s \ D//g för $r [; återgång @r [0.1]; }, ); min @config = stämm %config; mitt $file = $infile; nr. uppsättning detta som behövt. öppna min $fh, ”<”, $file, då matrisen ”kan inte öppna <$file> för läsning $! ”; $/= ”TYP: \ n”; min stunder ($record = <$fh>) { segrare $record; om därefter $record-eq ''; $record-=~s (TIFF-arkiv på offset. +) \ n; Framtida bruk för ##, för öka fel $errorCount = 0; mitt ($fullpath, $data) = splittring (/\ n, $record, 2); $fullpath-=~s: $//; mitt ($drv, $path, $file) = spara:: Spec->splitpath ($fullpath); ## får kompressionsintrigdata $cs = $config {$1} om (intrigen för kompression för för $data-=~s \ s {2}: \ s+ (. *?)\ n); om (! definierad $cs) { tryck ”[FELET]: Kompressionsintrig för inte-funnen $file. \ n”; tryck ERRLOG ”[FELET]: Kompressionsintrig för inte-funnen $file. \ n”; $errorCount++; #next; } ## får Photometric tolkningsdata $pi = $config {$1} om (den Photometric tolkningen för för $data-=~s \ s {2}: \ s+ (. *?)\ n); om (! definierad $pi) { tryck ”[FELET]: Photometric tolkning för inte-funnen $file. \ n”; tryck ERRLOG ”[FELET]: Photometric tolkning för inte-funnen $file. \ n”; $errorCount++; #next; } ## får bitar/tar prov data $bits = $1, om ($data-=~s \ 2} bitar för s {\ /Sample: \ s+ (. *?)\ n); om (! definierad $bits) { tryck ”[FELET]: Bitar/tar prov data för inte-funnen $file. \ n”; tryck ERRLOG ”[FELET]: Bitar/tar prov data för inte-funnen $file. \ n”; $errorCount++; #next; } ## får tar prov/PIXELdata $pixels = $1, om (tar prov för för $data-=~s \ s {2} \ /Pixel: \ s+ (. *?)\ n); om (! definierad $pixels) { tryck ”[FELET]: Tar prov/PIXELdata för inte-funnen $file. \ n”; tryck ERRLOG ”[FELET]: Tar prov/PIXELdata för inte-funnen $file. \ n”; $errorCount++; #next; } ## får AlphaChnl värderar (bitar * PIXEL) $alphachnl = $bits * $pixels; om ($alphachnl-== 1) { $alphachnl = ”bkwhts”; } elsif ($alphachnl-== 8) { $alphachnl = ”färgar”; } elsif ($alphachnl-== 24) { $alphachnl = ”doLOGO”; } annars { $alphachnl = ”unknwn”; } ## får upplösningsdata min @r = $config {”upplösning”} - > ($1) om (upplösning för för $data-=~s \ s {2}: \ s+ (. *?)\ n); ## får bredd-/längddata mitt ($w, $l) = ($1, $2) om ($data-=~s \ s {2} avbildar bredd: avbilda längden: (\ d+) (\ d+) \ n); ##bredd om (! definierade $w) { tryck ”[FELET]: Bredd för inte-funnen $file. \ n”; tryck ERRLOG ”[FELET]: Bredd för inte-funnen $file. \ n”; $errorCount++; #next; } ##längd om (! definierad $l) { tryck ”[FELET]: Längd för inte-funnen $file. \ n”; tryck ERRLOG ”[FELET]: Längd för inte-funnen $file. \ n”; $errorCount++; #next; } ##upplösning om (! definierad $r [0] || ! definierad $r [1]) { tryck ”[FELET]: Upplösning för inte-funnen $file. \ n”; tryck ERRLOG ”[FELET]: Upplösning för inte-funnen $file. \ n”; $errorCount++; #next; } ## får storleksanpassar av TIF (F) mitt $filesize = (-) för s $fullpath/(1024 * 1024); mitt $size_in_mb = sprintf ”%.2f”, $filesize; ##felkontroll om ($errorCount > 0) { tryck ”[info]: $file bearbetades inte, för många fel. \ n”; därefter; } $data-=~s \ n$//; ## ** för feltestning - tryck som ska avskärmas ** ##trycket $/, sammanfogar (”: ”, $file, $cs, $bits, $pi, $w, $l, @r, $size_in_mb, ”\ n”), $data,” \ n "; tryck ”som bearbetar $file \ n”; trycket OUT1 $/, sammanfogar (”; ”, $file, $cs, $bits, $pixels, $pi, $w, $l, @r, $size_in_mb, ”\ n”), $data,” \ n "; Tillverkad ##LA om ($state-eq ”LA”) { tryck OUT2 ”$file; ” ”$cs; ” ”$alphachnl; ” ”$pi; ” ”$w; ” ”$l; ” ”$r [0]; $r [1]; ; ; ” ”$size_in_mb; ; ” ”\ '$batch; ; ; ; ” ”start; ” ”$file; ; ; ; ; ; ; ; ; ; ” ”$size_in_mb; ” ”flyttning; ” ”$file; ” ”$dir_root-\ \ som göras; ” ”\ n”; } Tillverkad ## NM elsif ($state-eq ”NM”) { tryck OUT2 ”$file; ” ”$cs; ” ”$alphachnl; ” ”$pi; ” ”$w; ” ”$l; ” ”$r [0]; $r [1]; ; ; ” ”$size_in_mb; ; ” ”\ '$batch; ; ; ; ” ”start; ” ”$file; ” ”$size_in_mb; ” ”flyttning; ” ”$file; ” ”$dir_root-\ \ som göras; ” ”\ n”; därefter; } Tillverkad ## OK/UT elsif (”REKO” $state-eq, || $state-eq ”UT”) { tryck OUT2 ”$file; ” ”$cs; ” ”$alphachnl; ” ”$pi; ” ”$w; ” ”$l; ” ”$r [0]; $r [1]; ; ; ” ”$size_in_mb; ; ” ”\ '$batch; ; ; ; ” ”start; ” ”$file; ” ”$size_in_mb; ” ”flyttning; ” ”$file; ” ”$dir_root-\ \ som göras; ” ”start; ” $file. ”f; ” ”flyttning; ” $file. ”f; ” ”$dir_root \ \ gjord \ \ TEMPdone; ” ”\ n”; därefter; } Tillverkad ## TX/WY elsif ($state-eq ”TX”, || $state-eq ”WY”) { tryck OUT2 ”$file; ” ”$cs; ” ”$alphachnl; ” ”$pi; ” ”$w; ” ”$l; ” ”$r [0]; $r [1]; ” ”\ för flyttning $dir_root \ $file $dir_root \ \ $cs \ \ $file; ; ” ”$size_in_mb; ; ” ”\ '$batch; ; ; ” ”start; ” ”$dir_root-\ \ $cs \ \ $file; ” ”$file; ” ”$size_in_mb; ” ”flyttning; ” ”$dir_root-\ \ $cs \ \ $file; ” ”$dir_root-\ \ som göras; ” ”start; ” $file. ”f; ” ”flyttning; ” $file. ”f; ” ”$dir_root \ \ gjord \ \ TEMPdone; ” ”\ n”; därefter; } elsif ($state-eq ”INGA”, || $state-eq”,--”, || $state-eq ”ANNAT”) { tryck OUT2 ”$file; ” ”$cs; ” ”$alphachnl; ” ”$pi; ” ”$w; ” ”$l; ” ”$r [0]; $r [1]; ” ”$size_in_mb \ n”; därefter; } } nära (OUT1) eller matrisen ”kan inte nära out1: $! ”; nära (OUT2) eller matrisen ”kan inte nära out2: $! ”; nära (ERRLOG) eller matrisen ”kan inte det nära felet logga: $! ”; nära ($fh) eller matrisen ”kan inte nära $fh: $! ”;
" klar "

Svar : Perl-upprepning utfärdar

Är e-posten tilltalar ENDA memoen för objektet däri sätter in? I " M som slå vad den är inte, så du skulle måste att ha någon metod som finner att e-posten tilltalar i memoen sätter in, och AFAIK där är ingen macro handling för builtin som ska gör att - du ska behov att använda stamgästuttryck, som kan utvärdera en text stränger/sparar, och retur till dig matchad stränger, baserade på ”uttryckt” dig tillförsel.

Det kodifiera ska fäste nedanfört gör detta. Precis kopiera/deg de objekt in i en ny standard enhet (namnge att enhetsbasTextFunctions eller något något liknande som) och använder därefter FindEmailInStringen fungerar för att gå den första e-posten tillbaka tilltalar lokaliserat i stränga. Att att göra, att och att anta dig ha, en bilda, som memoen sätter in på, är närvarande, dig kunde inkludera en knäppas för att visa värdera:

Sub MyButton_Click ()
  Msgbox FindEmailInString (Me.YourMemoField)
Avsluta suben

Notera kodifiera för det stamgästuttryck kom från John Nuricks den utmärkta sidan här: http://www.j.nurick.dial.pipex.com/Code/index.htm

Se vår den egna Patrick Matthews artikeln på Reg-före detta att läsa mer om stamgästuttryck: http://www.experts-exchange.com/articles/Programming/Languages/Visual_Basic/Using-Regular-Expressions-in-Visual-Basic-for-Applications-and-Visual-Basic-6.html?sfQueryTermInfo=1+30+express+regular





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
Andra lösningar  
 
programming4us programming4us