Frage : Perl-Wiederholungausgabe

Angebrachten Code sehen.  Dieses ist das Hauptteil meines Perl-Programms.  Ist hier meine data.txt-Akte:

TYPE:
C:\Users\ddecker\Desktop\D ad \ tiffs \ filename.tif:
TIFF Verzeichnis Versatz 0x10eb4
an der Bild-Breite: Bild-Länge 1728: 2376
Entschließung: 200, 200 Pixel/inch
Spitzen/Probe: 1
Kompressions-Entwurf: Photometrische Deutung der CCITT-Gruppen-4
: Minute-ist-white
FillOrder: lsb--msb
Dokumenten-Namen: „Standardeingang "
Bild-Beschreibung: „umgewandelte PBM Akte "
Lagebestimmung: Oberseite der Reihe 0, Spalte 0 lhs
Proben/Pixel: 1
Reihen/Streifen: 2376
planare Konfiguration: einzelnes Bild plane
TYPE:
C:\Users\ddecker\Desktop\D ad \ tiffs \ filename2.tif:
TIFF Verzeichnis Versatz 0x4aac
an der Bild-Breite: Bild-Länge 1728: 2376
Entschließung: 200, 200 Pixel/inch
Spitzen/Probe: 1
Kompressions-Entwurf: Photometrische Deutung der CCITT-Gruppen-4
: Minute-ist-white
FillOrder: lsb--msb
Dokumenten-Namen: „Standardeingang "
Bild-Beschreibung: „umgewandelte PBM Akte "
Lagebestimmung: Oberseite der Reihe 0, Spalte 0 lhs
Proben/Pixel: 1
Reihen/Streifen: 2376
planare Konfiguration: einzelnes Bild plane
TYPE:
C:\Users\ddecker\Desktop\D ad \ tiffs \ filename3.tif:
TIFF Verzeichnis Versatz 0x8
an der Unterreihe-Art: (0 = 0x0)
Bild-Breite: 124 Bild-Länge: 124
Entschließung: 31, 31 Pixel/inch
Spitzen/Probe: 8
Kompressions-Entwurf: None
photometrische Deutung: RGB color
Software: „¼ "
Proben/Pixel: 3
Reihen/Streifen: 55
planare Konfiguration: einzelnes Bild plane

Basically das Programm macht durch und behandelt jeden Abschnitt oder „Block“ zwischen jeder „ART: “ Abschnitte.  So jedes Mal wenn das Programm „ART sieht: “, behandelt es es, wie ein neues „einstellte“, und führt den Code durch, der im Perl code.

If gesehen wird, das, Sie die Anmerkungen betrachten, dort ist etwas Informationen für die Fehlerprüfung.  Mein Problem ist die Tatsache, dass, wenn das Programm mit allen erforderlichen Informationen, aber andererseits anfängt, dem zweiten Block fehlende Informationen hat, dann funktioniert es nicht.  Z.B. diese data.txt-Probe nehmen (unterschiedlich zu oben; filename2.tif ist fehlende Probe/Pixel.):

TYPE:
C:\Users\ddecker\Desktop\D ad \ tiffs \ filename.tif:
TIFF Verzeichnis Versatz 0x10eb4
an der Bild-Breite: Bild-Länge 1728: 2376
Entschließung: 200, 200 Pixel/inch
Spitzen/Probe: 1
Kompressions-Entwurf: Photometrische Deutung der CCITT-Gruppen-4
: Minute-ist-white
FillOrder: lsb--msb
Dokumenten-Namen: „Standardeingang "
Bild-Beschreibung: „umgewandelte PBM Akte "
Lagebestimmung: Oberseite der Reihe 0, Spalte 0 lhs
Proben/Pixel: 1
Reihen/Streifen: 2376
planare Konfiguration: einzelnes Bild plane
TYPE:
C:\Users\ddecker\Desktop\D ad \ tiffs \ filename2.tif:
TIFF Verzeichnis Versatz 0x4aac
an der Bild-Breite: Bild-Länge 1728: 2376
Entschließung: 200, 200 Pixel/inch
Spitzen/Probe: 1
Kompressions-Entwurf: Photometrische Deutung der CCITT-Gruppen-4
: Minute-ist-white
FillOrder: lsb--msb
Dokumenten-Namen: „Standardeingang "
Bild-Beschreibung: „umgewandelte PBM Akte "
Lagebestimmung: Oberseite der Reihe 0, Spalte 0 lhs
Reihen/Streifen: 2376
planare Konfiguration: einzelnes Bild plane
TYPE:
C:\Users\ddecker\Desktop\D ad \ tiffs \ filename3.tif:
TIFF Verzeichnis Versatz 0x8
an der Unterreihe-Art: (0 = 0x0)
Bild-Breite: 124 Bild-Länge: 124
Entschließung: 31, 31 Pixel/inch
Spitzen/Probe: 8
Kompressions-Entwurf: None
photometrische Deutung: RGB color
Software: „¼ "
Proben/Pixel: 3
Reihen/Streifen: 55
planare Konfiguration: das einzelne Bild plane

Normal ausgegeben für das Programm ist das folgende:

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

However, wenn es die Daten von oben genanntem es sollte sein verfehlt:

Processing filename.tif
[STÖRUNG]: Beispiel-/Pixeldaten für filename2.tif nicht found.
[Info]: filename.tif wurde nicht, zu vieles errors.
Processing filename3.tif
Error Maschinenbordbuch saved.

HOWEVER, es tut nicht dies, der Ausgang ist verarbeitet:

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

Which Mittel, das, wenn es mit einer guten Aufzeichnung anfängt und schlägt dann eine Aufzeichnung „des Schlechten“ oder „der verfehlendaten“, denkt sie, dass es gute Daten aus etwas Gründen ist und sie als gutes behandelt und die Daten verarbeitet.  Wenn ich ALLES „von der ART entferne: … DATEINAME… und tiff-Verzeichnis am Versatz 0x4aac“, von einer Aufzeichnung, DANN sieht sie die Störungen.  Ist kein sinnvoll.  Dieses Beispiel sehen:

TYPE:
C:\Users\ddecker\Desktop\D ad \ tiffs \ filename.tif:
TIFF Verzeichnis Versatz 0x10eb4
an der Bild-Breite: Bild-Länge 1728: 2376
Entschließung: 200, 200 Pixel/inch
Spitzen/Probe: 1
Kompressions-Entwurf: Photometrische Deutung der CCITT-Gruppen-4
: Minute-ist-white
FillOrder: lsb--msb
Dokumenten-Namen: „Standardeingang "
Bild-Beschreibung: „umgewandelte PBM Akte "
Lagebestimmung: Oberseite der Reihe 0, Spalte 0 lhs
Proben/Pixel: 1
Reihen/Streifen: 2376
planare Konfiguration: einzelnes Bild plane
TYPE:
C:\Users\ddecker\Desktop\D ad \ tiffs \ filename2.tif:
TIFF Verzeichnis am Versatz 0x4aac
TYPE:
C:\Users\ddecker\Desktop\D ad \ tiffs \ filename3.tif:
TIFF Verzeichnis Versatz 0x8
an der Unterreihe-Art: (0 = 0x0)
Bild-Breite: 124 Bild-Länge: 124
Entschließung: 31, 31 Pixel/inch
Spitzen/Probe: 8
Kompressions-Entwurf: None
photometrische Deutung: RGB color
Software: „¼ "
Proben/Pixel: 3
Reihen/Streifen: 55
planare Konfiguration: einzelner Bild plane

The Ausgang ist, wie folgt:

Processing filename.tif
[STÖRUNG]: Breite für filename2.tif nicht found.
[STÖRUNG]: Länge für filename2.tif nicht found.
[STÖRUNG]: Entschließung für filename2.tif nicht found.
[Info]: filename2.tif wurde nicht, zu vieles errors.
Processing filename3.tif
Error Maschinenbordbuch saved.

So, im Allgemeinen, wenn KEINE Daten für eine Aufzeichnung anwesend sind, es arbeitet, aber verarbeitet, wenn 1 oder mehr Werte (aber nicht ALLE) für eine Aufzeichnung, die für Ausgang erforderlich ist, es fehlen behandelt ihn, da kein errors.

Can jedermann etwas Licht auf this.
verschüttete
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:
6:
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:
$infile = „data.txt“;
#$infile = $batOutput;

## Ausgabedatei-Handgriffe (öffnen)
öffnen (OUT1, „> \!“. $state.$status. „INFO.txt“) oder sterben „können nicht \! sich zu öffnen“. $state.$status. „INFO.txt: $! “; 
öffnen (OUT2, „> \!“. $state.$status. „INFOspdsht.txt“) oder sterben „können nicht \! sich zu öffnen“. $state.$status. „INFO.txt $! “;
öffnen (ERRLOG, „> \! errors.log“) oder sterben „können nicht sich öffnen! errors.log $! “;

## Druck-Überschriften zur spdsht Akte
Druck OUT2 „; ; ; ; Whitespace; ; DPI bestimmen die Größe neu; ; ; \ n“;
Druck OUT2 „Dateiname; Baut.; AlphCnl; Foto; Wid; Len; Res 0; x0; ; ; MB \ n“;

## Konfigurations-Daten für maskierendatenausgang
mein %config = (
    „LZW“ => „färbt“,
    „Lempel-Ziv u. walisische kodierung“ => „färbt“,
    „CCITT gruppieren 4“ => „bkwhts“,
    „CCITT gruppieren die kodierung mit 4 Faksimiles“ => „bkwhts“,
    „Kein“ => „keine“,
    „keine“ => „keine“,
    „Rgb-Farbe“ => „färbt“,
    „Minute-sein-weißes“ => „bkwhts“,
    „Minute-sein-schwarzes“ => „bkwhts“,
    „Palettenfarbe (RGB vom colormap)“ => „färbt“,
    „Entschließung“ => Unterseeboot {
                                            mein @r = spaltete auf sich (/,/, Verschiebung);
                                            $r [0] =~ s \ D//g;
                                            $r [1] =~ s \ D//g;
                                            Rückhol@r [0.1];
    },
);

mein @config = Schlüssel %config;

mein $file = $infile; # dieses einstellen, wie gebraucht.

mein $fh, „<“, $file öffnen oder sterben „kann <$file> für Messwert $ nicht öffnen! “;

$ = „ART: \ n“;
während (mein $record = <$fh>) {
    chomp $record;
    zunächst wenn $record eq '';
    $record =~ s (tiff-Verzeichnis am Versatz. +) \ n;
	
	## zukünftiger Gebrauch, für das Erhöhen von Störungen
	$errorCount = 0;

    mein ($fullpath, $data) = aufspalten (/\ n, $record, 2);
    $fullpath =~ s: $;

    mein ($drv, $path, $file) = Akte:: Spec->splitpath ($fullpath);

	## erhalten Kompressions-Entwurfdaten
	$cs = $config {$1} wenn ($data =~ s-\ s-{2} Kompressions-Entwurf: \ s+ (. *?)\ n);
	wenn (! definiertes $cs) {
		Druck „[STÖRUNG]: Kompressions-Entwurf für $file nicht gefunden. \ n“;
		Druck ERRLOG „[STÖRUNG]: Kompressions-Entwurf für $file nicht gefunden. \ n“;
		$errorCount++;
		#next;
	}	
 	
 	## erhalten photometrische Deutungsdaten
 	$pi = $config {$1} wenn ($data =~ s-\ s-{2} photometrische Deutung: \ s+ (. *?)\ n);
    wenn (! definiertes $pi) {
    	Druck „[STÖRUNG]: Photometrische Deutung für $file nicht gefunden. \ n“;
    	Druck ERRLOG „[STÖRUNG]: Photometrische Deutung für $file nicht gefunden. \ n“;
    	$errorCount++;
    	#next;
    }
    
    ## erhalten Spitzen-/Beispieldaten
    $bits = $1, wenn ($data =~ s \ s-{2} Bits \ /Sample: \ s+ (. *?)\ n);
    wenn (! definiertes $bits) {
    	Druck „[STÖRUNG]: Spitzen-/Beispieldaten für $file nicht gefunden. \ n“;
    	Druck ERRLOG „[STÖRUNG]: Spitzen-/Beispieldaten für $file nicht gefunden. \ n“;
    	$errorCount++;
    	#next;
    }
    
    ## erhalten Beispiel-/Pixeldaten
    $pixels = $1, wenn ($data =~ s-\ s-{2} Proben \ /Pixel: \ s+ (. *?)\ n);
    wenn (! definiertes $pixels) {
    	Druck „[STÖRUNG]: Beispiel-/Pixeldaten für $file nicht gefunden. \ n“;
    	Druck ERRLOG „[STÖRUNG]: Beispiel-/Pixeldaten für $file nicht gefunden. \ n“;
    	$errorCount++;
    	#next;
    }
    
    ## erhalten AlphaChnl Wert (Spitzen * Pixel)
    $alphachnl = $bits * $pixels;
    wenn ($alphachnl == 1) {
    	$alphachnl = „bkwhts“;
    }
    elsif ($alphachnl == 8) {
    	$alphachnl = „färbt“;
    }
    elsif ($alphachnl == 24) {
    	$alphachnl = „doLOGO“;
    }
    sonst {
    	$alphachnl = „unknwn“;
    }
    
    ## erhalten Entschließungdaten
    mein @r = $config {„Entschließung“} - > ($1), wenn ($data =~ s-\ s-{2} Entschließung: \ s+ (. *?)\ n);
    
    ## erhalten Breiten-/Längendaten
    mein ($w, $l) = ($1, $2), wenn ($data =~ s \ s-{2} Bild-Breite: (\ d+) Bild-Länge: (\ d+) \ n);
    
    ## Breite
	wenn (! definiertes $w) {
		Druck „[STÖRUNG]: Breite für $file nicht gefunden. \ n“;
		Druck ERRLOG „[STÖRUNG]: Breite für $file nicht gefunden. \ n“;
		$errorCount++;
		#next;
	}

    ## Länge
	wenn (! definiertes $l) {
		Druck „[STÖRUNG]: Länge für $file nicht gefunden. \ n“;
		Druck ERRLOG „[STÖRUNG]: Länge für $file nicht gefunden. \ n“;
		$errorCount++;
		#next;
	}
	
	## Entschließung
	wenn (! definiertes $r [0] || ! definiertes $r [1]) {
		Druck „[STÖRUNG]: Entschließung für $file nicht gefunden. \ n“;
		Druck ERRLOG „[STÖRUNG]: Entschließung für $file nicht gefunden. \ n“;
		$errorCount++;
		#next;
	}	
		
	## erhalten Größe Akten der TIF-(F)
	mein $filesize = (-) s $fullpath/(1024 * 1024);
    mein $size_in_mb = sprintf „%.2f“, $filesize;
    
    ## Störungs-Überprüfung
    wenn ($errorCount > 0) {
    	Druck „[Info]: $file wurde nicht, zu viele Störungen verarbeitet. \ n“;
    	zunächst;
    }
    
    $data =~ s \ n$//;

	## ** für Entstörung - auszusortieren Drucke **
    ## Druck $, verbinden („: “, $file, $cs, $bits, $pi, $w, $l, @r, $size_in_mb, „\ n“), $data,“ \ n ";
    Druck „, der $file \ n“ verarbeitet;

    Druck OUT1 $, verbinden („; “, $file, $cs, $bits, $pixels, $pi, $w, $l, @r, $size_in_mb, „\ n“), $data,“ \ n ";
    
    ## LA Ausgang
    wenn ($state eq „LA“) {
    	Druck OUT2 „$file; “, „$cs; “, „$alphachnl; “, „$pi; “, „$w; “, „$l; “, „$r [0]; $r [1]; ; ; “, „$size_in_mb; ; “, „\ '$batch; ; ; ; “, „Anfang; “, „$file; ; ; ; ; ; ; ; ; ; “, „$size_in_mb; “, „Bewegung; “, „$file; “, „$dir_root \ \ getan; “, „\ n“;	
    }
    ## Nanometer-Ausgang
    elsif ($state eq „Nanometer“) {
    	Druck OUT2 „$file; “, „$cs; “, „$alphachnl; “, „$pi; “, „$w; “, „$l; “, „$r [0]; $r [1]; ; ; “, „$size_in_mb; ; “, „\ '$batch; ; ; ; “, „Anfang; “, „$file; “, „$size_in_mb; “, „Bewegung; “, „$file; “, „$dir_root \ \ getan; “, „\ n“;
    	zunächst;
    }
    ## OK/UT Ausgang
    elsif ($state eq „OKAY“ || $state eq „UT“) {
    	Druck OUT2 „$file; “, „$cs; “, „$alphachnl; “, „$pi; “, „$w; “, „$l; “, „$r [0]; $r [1]; ; ; “, „$size_in_mb; ; “, „\ '$batch; ; ; ; “, „Anfang; “, „$file; “, „$size_in_mb; “, „Bewegung; “, „$file; “, „$dir_root \ \ getan; “, „Anfang; “, $file. „f; “, „Bewegung; “, $file. „f; “, „$dir_root \ \ getanes \ \ TEMPdone; “, „\ n“;
    	zunächst;
    }
    ## TX/WY Ausgang
    elsif ($state eq „TX“ || $state eq „WY“) {
    	Druck OUT2 „$file; “, „$cs; “, „$alphachnl; “, „$pi; “, „$w; “, „$l; “, „$r [0]; $r [1]; “, „\ der Bewegung $dir_root \ $file $dir_root \ \ $cs \ \ $file; ; “, „$size_in_mb; ; “, „\ '$batch; ; ; “, „Anfang; “, „$dir_root \ \ $cs \ \ $file; “, „$file; “, „$size_in_mb; “, „Bewegung; “, „$dir_root \ \ $cs \ \ $file; “, „$dir_root \ \ getan; “, „Anfang; “, $file. „f; “, „Bewegung; “, $file. „f; “, „$dir_root \ \ getanes \ \ TEMPdone; “, „\ n“;
    	zunächst;
    }
    elsif ($state eq „KEINE“ || $state eq“--„ || $state eq „ANDERES“) {
    	Druck OUT2 „$file; “, „$cs; “, „$alphachnl; “, „$pi; “, „$w; “, „$l; “, „$r [0]; $r [1]; “, „$size_in_mb \ n“;
    	zunächst;
    }
}

schließen (OUT1) oder sterben „kann out1 nicht schließen: $! “; 
schließen (OUT2) oder sterben „kann out2 nicht schließen: $! “; 
schließen (ERRLOG) oder sterben „kann Störspeicher nicht schließen: $! “;
schließen ($fh) oder sterben „kann $fh nicht schließen: $! “;

Antwort : Perl-Wiederholungausgabe

Ist das email address das EINZIGE Einzelteil in diesem Protokollfeld? I " m es wettend ist nicht, also würden Sie irgendeine Methode haben müssen, zum dieses email address im Protokollfeld zu finden, und AFAIK dort ist keine builtin Makrotätigkeit, die dass tut - Sie müssen die regulären Ausdrücke, die verwenden eine Textfolge/eine Akte auswerten und zu Ihnen eine zusammengebrachte Schnur zurückbringen können, auf dem „Ausdruck“ Sie basiert Versorgungsmaterial.

Der Code, der unten angebracht wird, tut dies. Gerade Kopie/Paste jene Einzelteile in ein neues Standardmodul (Name das Modul basTextFunctions oder in etwas Ähnliches) und verwenden dann die FindEmailInString Funktion, um das erste email address zurückzubringen fanden in der Schnur. Um zu tun dass, Sie annehmend eine Form haben auf der das Protokollfeld anwesend ist, konnten Sie einen Knopf mit einschließen um den Wert zu zeigen:

Sub MyButton_Click ()
  Msgbox FindEmailInString (Me.YourMemoField)
Enden-Unterseeboot

Den Code für diesen regulären Ausdruck merken herkam ausgezeichneten Seite von der John-Nuricks: http://www.j.nurick.dial.pipex.com/Code/index.htm

Um mehr über reguläre Ausdrücke zu lesen, unseres eigenen Artikel Patrick-Matthews auf ex Ausrichtung sehen: 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:
6:
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:
Allgemeine Funktion FindEmailInString (StringToSearch als Schnur) als Schnur

Schwaches sExp als Schnur

sExp = „\ b [A-Z0-9. _%+-] +@ [A-Z0-9. -] + \. [A-Z] {2.4} \ b“
FindEmailInString rgxExtract (StringToSearch, sExp)

Enden-Funktion
Allgemeines Funktion rgxExtract (wahlweise freigestelltes ByVal Ziel als Variante, _
    Wahlweise freigestelltes Muster als Schnur = "", _
    Wahlweise freigestelltes ByVal Einzelteil als lang = 0, _
    Wahlweise freigestelltes CaseSensitive, wie Boolesch = falsch, _
    Wahlweise freigestelltes FailOnError, wie Boolesch = richten, _ aus
    Wahlweise freigestellt als Boolesches = falsches) _ fortbestehen
  Als Variante
   
  'Zusammenpassende Funktion des regulären Ausdrucks verwendbar für Gebrauch
  'in VB/A im Allgemeinen und in den Zugangsfragen.
  'Durch John Nurick. Modernisiertes 14. Januar 06.
   
  'Nimmt eine Suchschnur (Ziel) und einen regulären Ausdruck
  '(Muster) und ein wahlweise freigestelltes Einzelteilargument.
  '- Wenn Einzelteil ausgelassen wird und eine Teilkette des Ziels Muster zusammenbringt,
  '  Rückkehr die Teilkette.
  '- Wenn Muster die Gruppierung von Klammern umfaßt, eine Teilkette des Ziels
  '  bringt Muster zusammen und Einzelteil ist eine ganze Zahl, zurückbringt das submatch
  '  spezifiziert durch Item (erstes submatch ist Einzelteil 0). Wenn es nicht gibt
  '  genügende submatches, Rückkehr Null. Negative Werte des Einzelteilanfangs
  ',   zählend mit dem letzten submatch.
  '- Wenn kein Gleiches, Rückkehr Null.
  '- Rückkehr Null auf Störung, es sei denn FailOnError zutreffend ist.
  '  Passt immer an das gesamte Ziel an (d.h. global und
  '  Mehrkanal zutreffend sein).
  
  'CaseSensitive Gleiche unabhängig davon Fall.
 
  'Bestehen Kontrollen ob der kompilierte RegExp Gegenstand weiter
  'bleibt im Gedächtnis, das zum folgenden Anruf zu bereit ist
  'Funktion oder, ob sie sofort entledigt wird. Dieses
  'bedeutet, dass die Funktion in den Fragen ohne zu haben verwendet werden kann
  'zu verursachen, einen neuen RegExp Gegenstand für kompilieren, benutzen und zerstören
  'jede Reihe, die verarbeitet wird. Aber es bedeutet auch dass der Gegenstand
  'Überreste im Gedächtnis nach der Frage ist gelaufen. Zu zerstören
  'das Gedächtnis einwenden und freigeben, benennen diese Funktion eine
  'letztes Mal ohne Argumente.
  '
  ', die Funktion mit verschiedenen Argumenten benennend (z.B. ein neues
  'Muster) recompiles den RegExp Gegenstand, so
  'die Funktion kann in den verschiedenen Fragen verwendet werden. Jedoch dort
  'sein können Probleme, wenn zwei Gewinde die Funktion an benennen
  'die gleiche Zeit.
 
  Const rgxPROC_NAME = „rgxExtract“
  Statisches Erz als Gegenstand 'VBScript_RegExp_55.RegExp
    'Statische Erklärungmittel müssen wir nicht verursachen
    'und den RegExp Gegenstand jede einzelne Zeit kompilieren
    'die Funktion wird benannt.
  Schwache oMatches als Gegenstand 'VBScript_RegExp_55.MatchCollection
   
  Auf Störung Goto- ErrHandler
  rgxExtract = Null-'Rückstellungsrückholwert
    'Notiz:: wenn FailOnError falsch ist, bringt Null auf Störung zurück
 
  Wenn IsMissing (Ziel) dann
    'Dieses ist das Signal, sich Erz zu entledigen
    Erz einstellen = nichts
    Funktion 'mit Default-Wert herausnehmen
  Beenden wenn
   
  'Den RegExp Gegenstand wenn notwendig verursachen
  Wenn Erz nichts dann ist
    Erz = CreateObject („VBScript.Regexp“) einstellen
  Beenden wenn
 
  Mit Erz
    'Überprüfen, ob die gegenwärtigen Argumente (anders als Ziel)
    'zu denen unterschiedlich sein, die im Erz gespeichert werden, und sie aktualisieren
    '(dadurch recompiling das regex) nur wenn notwendig.
    Wenn CaseSensitive = .IgnoreCase dann
      .IgnoreCase = nicht .IgnoreCase
    Beenden wenn
    . Global = ausrichten
    . Mehrkanal = ausrichten
'    Wenn Mehrkanal <> . Mehrkanal dann
'      . Mehrkanal- = Mehrkanal
'    Beenden wenn
    Wenn Muster <> . Muster dann
      . Muster = Muster
    Beenden wenn
 
  'Schließlich, das Gleiche durchführen
    Wenn IsNull (Ziel) dann
      rgxExtract = Null
    Sonst
      oMatches = oRE.Execute (Ziel) einstellen
      Wenn oMatches.Count > 0 dann
        Wenn oMatches (0) .SubMatches.Count = 0 dann
          'Keine () Gruppe im Muster: das Gleiche zurückbringen
          Wenn Einzelteil < 0="" Then="">= oMatches.Count
              'Positives Einzelteil überstieg die Zahl der Gleicher
              rgxExtract = Null
              Wenn FailOnError dann
                Err.Raise 9
              Beenden wenn
            Sonst umkleiden
              rgxExtract = oMatches (Einzelteil)
          Ende auserwählt
         
        Sonst  'es gibt eine oder mehrere () gefangengenommenen Gruppen im Muster
              'das zurückbringen, das von Item spezifiziert wird
          Mit oMatches (0) .SubMatches
            Wenn Einzelteil < 0="" Then="">=. Zählimpuls
                'Positives Einzelteil überstieg die Zahl submatches
                rgxExtract = Null
                Wenn FailOnError dann
                  Err.Raise 9
                Beenden wenn
              'Gültige Einzelteilzahl sonst umkleiden
                rgxExtract =. Einzelteil (Einzelteil)
            Ende auserwählt
          Ende mit
        Beenden wenn
      Sonst
        rgxExtract = Null
      Beenden wenn
    Beenden wenn
  Mit beenden
 
  'Aufräumen und normaler Ausgang
  Wenn, nicht dann fortzubestehen Erz = nichts einstellte
  Funktion herausnehmen
 
ErrHandler:
  Wenn FailOnError dann
    Mit sich irren
      Fall vorwählen. Zahl
        'Die Mitteilung „der Gegenstand-definierten Störung“ der Rückstellung ersetzen
        Rechtssache 9: . Beschreibung = „Tiefzeichen aus Strecke (das Einzelteilzahl erbetene“ _ heraus
          u. „war grösser als die Zahl der gefundenen Gleichen oder als die Zahl von“ _
          u. „(...) Gruppierung/, die gefangennimmt Klammern im Muster).“
        Rechtssache 13: . Beschreibung = „Art Fehlanpassung, vermutlich, weil“ _
          u. „das "" Ziel "" Argument konnte nicht in eine Schnur umgewandelt werden“
        Rechtssache 5017: . Beschreibung = „Syntaxstörung im regulären Ausdruck“
        Rechtssache 5018: . Beschreibung = „unerwarteter Quantifizierer im regulären Ausdruck“
        Rechtssache 5019: . Beschreibung = „erwartet worden „]“ im regulären Ausdruck "
        Rechtssache 5020: . Beschreibung = „erwartet ")“ im regulären Ausdruck "
      Fall sonst
        Wenn Erz nichts 'Regexp Gegenstand verursachen dann nicht gekonnt ist
          . Beschreibung = „konnte VBScript.RegExp Gegenstand nicht verursachen. “ U. Err.Description
        Sonst 'unerwartete Störung
          . Beschreibung = rgxPROC_NAME u. „: “ u. Beschreibung
        Beenden wenn
      Auserwähltes beenden
      Erz einstellen = nichts
      . Err.Number, rgxPROC_NAME, _ anheben
          rgxPROC_NAME u. „(): “ u. Beschreibung
    Ende mit
  Sonst 'Ausfallen still
    Err.Clear
    Erz einstellen = nichts
  Beenden wenn
Funktion beenden
Weitere Lösungen  
 
programming4us programming4us