Questione : Edizione di ripetizione del Perl

Vedere il codice allegato.  Ciò è la parte principale del mio programma del Perl.  Qui è la mia lima di data.txt:

TYPE: ad \ tiffs \ filename.tif del
C:\Users\ddecker\Desktop\D: indice del
TIFF alla larghezza di immagine di contrappeso 0x10eb4
: Lunghezza 1728 di immagine: risoluzione di 2376
: 200, 200 pixel/punte/campione del inch
: schema di compressione di 1
: Interpretazione fotometrica del gruppo 4
del CCITT: minuto-è-white
FillOrder: lsb--msb: “Descrizione di immagine del
dell'input standard ": “orientamento del
della lima convertita di PBM ": parte superiore di fila 0, campioni/pixel del lhs
della colonna 0: file/striscia di 1
: configurazione planare di 2376
: singolo plane
TYPE di immagine: ad \ tiffs \ filename2.tif del
C:\Users\ddecker\Desktop\D: indice del
TIFF alla larghezza di immagine di contrappeso 0x4aac
: Lunghezza 1728 di immagine: risoluzione di 2376
: 200, 200 pixel/punte/campione del inch
: schema di compressione di 1
: Interpretazione fotometrica del gruppo 4
del CCITT: minuto-è-white
FillOrder: lsb--msb: “Descrizione di immagine del
dell'input standard ": “orientamento del
della lima convertita di PBM ": parte superiore di fila 0, campioni/pixel del lhs
della colonna 0: file/striscia di 1
: configurazione planare di 2376
: singolo plane
TYPE di immagine: ad \ tiffs \ filename3.tif del
C:\Users\ddecker\Desktop\D: indice del
TIFF al tipo dell'archivio secondario di contrappeso 0x8
: (0 = 0x0) larghezza di immagine del
: Una lunghezza di 124 immagini: risoluzione di 124
: 31, 31 pixel/punte/campione del inch
: schema di compressione di 8
: Interpretazione fotometrica di None
: Software del color
di RGB: campioni/pixel del
“del ¼ ": file/striscia di 3
: configurazione planare di 55
: il singolo plane

Basically di immagine il programma va attraverso e tratta ogni sezione o “blocco„ fra ogni “TIPO: „ sezioni.  Così, ogni volta che il programma vede “il TIPO: „, lo tratta come un nuovo “si è regolato„ ed effettua il codice veduto nel Perl code.

If che esaminate le osservazioni, là è alcune informazioni per la verifica degli errori.  Il mio problema è il fatto che quando il programma comincia fuori con tutte le informazioni necessarie, ma d'altra parte il secondo blocco ha informazioni mancanti, quindi non funzionano.  Per esempio, prelevare questo campione di data.txt (differente da sopra; filename2.tif è campione/pixel mancanti.):

TYPE: ad \ tiffs \ filename.tif del
C:\Users\ddecker\Desktop\D: indice del
TIFF alla larghezza di immagine di contrappeso 0x10eb4
: Lunghezza 1728 di immagine: risoluzione di 2376
: 200, 200 pixel/punte/campione del inch
: schema di compressione di 1
: Interpretazione fotometrica del gruppo 4
del CCITT: minuto-è-white
FillOrder: lsb--msb: “Descrizione di immagine del
dell'input standard ": “orientamento del
della lima convertita di PBM ": parte superiore di fila 0, campioni/pixel del lhs
della colonna 0: file/striscia di 1
: configurazione planare di 2376
: singolo plane
TYPE di immagine: ad \ tiffs \ filename2.tif del
C:\Users\ddecker\Desktop\D: indice del
TIFF alla larghezza di immagine di contrappeso 0x4aac
: Lunghezza 1728 di immagine: risoluzione di 2376
: 200, 200 pixel/punte/campione del inch
: schema di compressione di 1
: Interpretazione fotometrica del gruppo 4
del CCITT: minuto-è-white
FillOrder: lsb--msb: “Descrizione di immagine del
dell'input standard ": “orientamento del
della lima convertita di PBM ": parte superiore di fila 0, file/striscia del lhs
della colonna 0: configurazione planare di 2376
: singolo plane
TYPE di immagine: ad \ tiffs \ filename3.tif del
C:\Users\ddecker\Desktop\D: indice del
TIFF al tipo dell'archivio secondario di contrappeso 0x8
: (0 = 0x0) larghezza di immagine del
: Una lunghezza di 124 immagini: risoluzione di 124
: 31, 31 pixel/punte/campione del inch
: schema di compressione di 8
: Interpretazione fotometrica di None
: Software del color
di RGB: campioni/pixel del
“del ¼ ": file/striscia di 3
: configurazione planare di 55
: il singolo plane

Normal di immagine prodotto per il programma è il seguente:

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

However quando manca i dati dal di cui sopra dovrebbe essere:

Processing filename.tif
[ERRORE]: Dati pixel/del campione per filename2.tif non found.
[Info]: filename.tif non è stato procedato, troppo ceppo saved.

HOWEVER, esso di errors.
Processing filename3.tif
Error non sta facendo questo, l'uscita è: il mezzo del

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

Which, quello quando comincia fuori con una buona annotazione ed allora colpisce un'annotazione di dati mancanti “o„„ “di Male, pensa che sia buoni dati per alcuni motivi e li tratti come buon e procedi i dati.  Se rimuovo TUTTO “da TIPO: … NOME DI SCHEDARIO… ed indice del tiff al contrappeso 0x4aac„, da un'annotazione, ALLORA vede gli errori.  Non ha significato.  Vedere questo esempio:

TYPE: ad \ tiffs \ filename.tif del
C:\Users\ddecker\Desktop\D: indice del
TIFF alla larghezza di immagine di contrappeso 0x10eb4
: Lunghezza 1728 di immagine: risoluzione di 2376
: 200, 200 pixel/punte/campione del inch
: schema di compressione di 1
: Interpretazione fotometrica del gruppo 4
del CCITT: minuto-è-white
FillOrder: lsb--msb: “Descrizione di immagine del
dell'input standard ": “orientamento del
della lima convertita di PBM ": parte superiore di fila 0, campioni/pixel del lhs
della colonna 0: file/striscia di 1
: configurazione planare di 2376
: singolo plane
TYPE di immagine: ad \ tiffs \ filename2.tif del
C:\Users\ddecker\Desktop\D: indice del
TIFF al contrappeso 0x4aac
TYPE: ad \ tiffs \ filename3.tif del
C:\Users\ddecker\Desktop\D: indice del
TIFF al tipo dell'archivio secondario di contrappeso 0x8
: (0 = 0x0) larghezza di immagine del
: Una lunghezza di 124 immagini: risoluzione di 124
: 31, 31 pixel/punte/campione del inch
: schema di compressione di 8
: Interpretazione fotometrica di None
: Software del color
di RGB: campioni/pixel del
“del ¼ ": file/striscia di 3
: configurazione planare di 55
: la singola uscita del plane

The di immagine è come segue:

Processing filename.tif
[ERRORE]: Larghezza per filename2.tif non found.
[ERRORE]: Lunghezza per filename2.tif non found.
[ERRORE]: Risoluzione per filename2.tif non found.
[Info]: filename2.tif non è stato procedato, troppo ceppo saved.

So di errors.
Processing filename3.tif
Error, basicamente, quando non ci sono dati presenti per un'annotazione, esso funziona, ma quando il 1 o più valore (ma non TUTTI) mancare per un'annotazione che è necessaria per uscita, esso la tratta poichè nessun errors.

Can chiunque ha fatto una certa luce su this.
class= > " libero " del
> " del codeSnippet " del class= del
class= " lineNumbers " del
class= del
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:
class= " del id= " codeSnippet705652 del
$infile = “data.txt„;
#$infile = $batOutput;

Maniglie dell'archivio di uscita del ## (aprir)
aprir (OUT1, “> \!„. $state.$status. “INFO.txt„) o muoiono “non possono aprirsi \!„. $state.$status. “INFO.txt: $! „; 
aprir (OUT2, “> \!„. $state.$status. “INFOspdsht.txt„) o muoiono “non possono aprirsi \!„. $state.$status. “INFO.txt $! „;
aprir (ERRLOG, “> \! errors.log„) o muoiono “non possono aprirsi! errors.log $! „;

Intestazioni della stampa del ## alla lima dello spdsht
stampa OUT2 “; ; ; ; Whitespace; ; DPI ridimensionano; ; ; \ n„;
nome di schedario della stampa OUT2 “; Comp.; AlphCnl; Foto; Wid; Len; Ricerca 0; x0; ; ; Mb \ n„;

Dati di configurazione del ## per il emissione dei dati di mascheramento
mio %config = (
    „ Il => ““di LZW colora„,
    “„ Il => “della codifica gallese & di Lempel-Ziv colora„,
    “il CCITT raggruppa 4„ => “bkwhts„,
    “il CCITT raggruppa => “bkwhts„ della codifica„ dei 4 facsimili,
    “Nessuno„ => “nessun„,
    “nessun„ => “nessun„,
    “Il => “di colore di RGB„ colora„,
    => “minuto-essere-bianco„ “bkwhts„,
    => “minuto-essere-nero„ “bkwhts„,
    “il => “di colore della gamma di colori„ (RGB da colormap) colora„,
    Sommergibile del => “di risoluzione„ {
                                            il mio @r = ha spaccato (/,/, spostamento);
                                            0] s \ D//g del =~ di $r [;
                                            1] s \ D//g del =~ di $r [;
                                            @r di ritorno [0.1];
    },
);

il miei @config = chiavi %config;

mio $file = $infile; # regolare questo come stato necessario.

aprire il mio $fh, “<„, $file o morire “non può aprire <$file> per lettura $! „;

$ = “TIPO: \ n„;
mentre (mio $record = <$fh>) {
    chomp $record;
    dopo se eq di $record '';
    s del =~ di $record (indice del tiff al contrappeso. +) \ n;
	
	Uso futuro del ##, per incrementare gli errori
	$errorCount = 0;

    mio ($fullpath, $data) = spaccare (/\ n, $record, 2);
    s del =~ di $fullpath: $;

    mio ($drv, $path, $file) = lima:: Spec->splitpath ($fullpath);

	Il ## ottiene i dati di schema di compressione
	$cs = $config {$1} se (schema di compressione di s \ s del =~ di $data {2}: \ s+ (. *?)\ n);
	se (! $cs definito) {
		stampa “[ERRORE]: Schema di compressione per $file non trovato. \ n„;
		stampa ERRLOG “[ERRORE]: Schema di compressione per $file non trovato. \ n„;
		$errorCount++;
		#next;
	}	
 	
 	Il ## ottiene i dati fotometrici di interpretazione
 	$pi = $config {$1} se (interpretazione fotometrica di s \ s del =~ di $data {2}: \ s+ (. *?)\ n);
    se (! $pi definito) {
    	stampa “[ERRORE]: Interpretazione fotometrica per $file non trovato. \ n„;
    	stampa ERRLOG “[ERRORE]: Interpretazione fotometrica per $file non trovato. \ n„;
    	$errorCount++;
    	#next;
    }
    
    Il ## ottiene i dati campione/delle punte
    $bits = $1 se (s del =~ di $data \ bit \ /Sample di s {2}: \ s+ (. *?)\ n);
    se (! $bits definito) {
    	stampa “[ERRORE]: Dati campione/delle punte per $file non trovato. \ n„;
    	stampa ERRLOG “[ERRORE]: Dati campione/delle punte per $file non trovato. \ n„;
    	$errorCount++;
    	#next;
    }
    
    Il ## ottiene i dati pixel/dei campioni
    $pixels = $1 se (campioni \ /Pixel di s \ s del =~ di $data 2} {: \ s+ (. *?)\ n);
    se (! $pixels definito) {
    	stampa “[ERRORE]: Dati pixel/dei campioni per $file non trovato. \ n„;
    	stampa ERRLOG “[ERRORE]: Dati pixel/dei campioni per $file non trovato. \ n„;
    	$errorCount++;
    	#next;
    }
    
    Il ## ottiene il valore di AlphaChnl (punte * pixel)
    $alphachnl = $bits * $pixels;
    se (== di $alphachnl 1) {
    	$alphachnl = “bkwhts„;
    }
    elsif (== di $alphachnl 8) {
    	$alphachnl = “colora„;
    }
    elsif (== 24 di $alphachnl) {
    	$alphachnl = “doLOGO„;
    }
    altrimenti {
    	$alphachnl = “unknwn„;
    }
    
    Il ## ottiene i dati di risoluzione
    il miei @r = $config {“risoluzione„} - > ($1) se (risoluzione di s \ s del =~ di $data {2}: \ s+ (. *?)\ n);
    
    Il ## ottiene i dati lunghezza/di larghezza
    mio ($w, $l) = ($1, $2) se (s del =~ di $data \ larghezza immagine di s {2}: (\ d+) lunghezza di immagine: ) \ n (\ d+);
    
    Larghezza del ##
	se (! $w) definito {
		stampa “[ERRORE]: Larghezza per $file non trovato. \ n„;
		stampa ERRLOG “[ERRORE]: Larghezza per $file non trovato. \ n„;
		$errorCount++;
		#next;
	}

    Lunghezza del ##
	se (! $l) definito {
		stampa “[ERRORE]: Lunghezza per $file non trovato. \ n„;
		stampa ERRLOG “[ERRORE]: Lunghezza per $file non trovato. \ n„;
		$errorCount++;
		#next;
	}
	
	Risoluzione del ##
	se (! $r definito [0] || ! $r definito [1]) {
		stampa “[ERRORE]: Risoluzione per $file non trovato. \ n„;
		stampa ERRLOG “[ERRORE]: Risoluzione per $file non trovato. \ n„;
		$errorCount++;
		#next;
	}	
		
	Il ## ottiene il formato di TIF (F) lime
	mio $filesize = (-)/(di s $fullpath 1024 * 1024);
    mio $size_in_mb = sprintf “%.2f„, $filesize;
    
    Controllo di errore del ##
    se ($errorCount > 0) {
    	stampa “[Info]: $file non è stato procedato, troppi errori. \ n„;
    	dopo;
    }
    
    s \ n$//del =~ di $data;

	## ** per ricerca degli errori - stampe da selezionare **
    la stampa $ del ##, si unisce (“: „, $file, $cs, $bits, $pi, $w, $l, @r, $size_in_mb, “\ n„), $data,„ \ n ";
    stampa “che proceda $file \ n„;

    la stampa OUT1 $, si unisce (“; „, $file, $cs, $bits, $pixels, $pi, $w, $l, @r, $size_in_mb, “\ n„), $data,„ \ n ";
    
    Uscita della LA del ##
    se (eq “LA„ di $state) {
    	stampa OUT2 “$file; „, “$cs; „, “$alphachnl; „, “$pi; „, “$w; „, “$l; „, “$r [0]; $r [1]; ; ; „, “$size_in_mb; ; „, “\ '$batch; ; ; ; „, “inizio; „, “$file; ; ; ; ; ; ; ; ; ; „, “$size_in_mb; „, “movimento; „, “$file; „, “\ \ fatto di $dir_root; „, “\ n„;	
    }
    Uscita di nanometro del ##
    elsif (eq “nanometro„ di $state) {
    	stampa OUT2 “$file; „, “$cs; „, “$alphachnl; „, “$pi; „, “$w; „, “$l; „, “$r [0]; $r [1]; ; ; „, “$size_in_mb; ; „, “\ '$batch; ; ; ; „, “inizio; „, “$file; „, “$size_in_mb; „, “movimento; „, “$file; „, “\ \ fatto di $dir_root; „, “\ n„;
    	dopo;
    }
    Uscita del ## OK/UT
    elsif (eq di $state “GIUSTO„ || eq “UT„ di $state) {
    	stampa OUT2 “$file; „, “$cs; „, “$alphachnl; „, “$pi; „, “$w; „, “$l; „, “$r [0]; $r [1]; ; ; „, “$size_in_mb; ; „, “\ '$batch; ; ; ; „, “inizio; „, “$file; „, “$size_in_mb; „, “movimento; „, “$file; „, “\ \ fatto di $dir_root; „, “inizio; „, $file. “f; „, “movimento; „, $file. “f; „, “$dir_root \ \ \ fatto \ TEMPdone; „, “\ n„;
    	dopo;
    }
    Uscita del ## TX/WY
    elsif (eq “TX„ di $state || eq “WY„ di $state) {
    	stampa OUT2 “$file; „, “$cs; „, “$alphachnl; „, “$pi; „, “$w; „, “$l; „, “$r [0]; $r [1]; „, “\ \ $file \ \ $cs \ \ $file $dir_root di movimento $dir_root; ; „, “$size_in_mb; ; „, “\ '$batch; ; ; „, “inizio; „, “\ \ $file \ \ $cs di $dir_root; „, “$file; „, “$size_in_mb; „, “movimento; „, “\ \ $file \ \ $cs di $dir_root; „, “\ \ fatto di $dir_root; „, “inizio; „, $file. “f; „, “movimento; „, $file. “f; „, “$dir_root \ \ \ fatto \ TEMPdone; „, “\ n„;
    	dopo;
    }
    elsif (eq di $state “NESSUN„ || eq di $state„--“ || eq di $state “ALTRO„) {
    	stampa OUT2 “$file; „, “$cs; „, “$alphachnl; „, “$pi; „, “$w; „, “$l; „, “$r [0]; $r [1]; „, “$size_in_mb \ n„;
    	dopo;
    }
}

chiuder (OUT1) o morire “non può chiudere out1: $! „; 
chiuder (OUT2) o morire “non può chiudere out2: $! „; 
chiuder (ERRLOG) o morire “non può chiudere il ceppo di errore: $! „;
chiuder ($fh) o morire “non può chiudere $fh: $! „;
class= del

Risposta : Edizione di ripetizione del Perl

È il email address l'UNICO articolo in quel campo di appunto? I " m. che lo scommette non è, in modo da dovreste avere certo metodo per trovare quel email address nel campo di appunto e AFAIK là è azione a macroistruzione di builtin che basterà che - dovrete usare le espressioni normali, che possono valutare una stringa di testo/lima e restituire voi una stringa abbinata, basate “sull'espressione„ voi rifornimento.

Il codice allegato sotto farà questo. Appena la copia/colla quegli articoli in un nuovo modulo standard (nome che basTextFunctions del modulo, o in qualcosa di simile) ed allora usa la funzione di FindEmailInString per restituire il primo email address ha individuato nella stringa. Per fare che, ammettendolo avere una forma su cui il campo di appunto è presente, potreste includere un tasto per mostrare il valore:

Sub MyButton_Click ()
  Msgbox FindEmailInString (Me.YourMemoField)
Sommergibile dell'estremità

Notare il codice per quell'espressione normale è venuto dalla pagina eccellente del John Nurick qui: http://www.j.nurick.dial.pipex.com/Code/index.htm

Per leggere più circa le espressioni normali, vedere il nostro proprio l'articolo del Patrick Matthew sul registro ex: 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:
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
Altre soluzioni  
 
programming4us programming4us