Cuestión : Edición de la iteración del Perl

Ver el código atado.  Ésta es la parte principal de mi programa del Perl.  Aquí está mi archivo de data.txt:

TYPE: ad \ tiffs \ filename.tif del
C:\Users\ddecker\Desktop\D: directorio del
TIFF en la anchura de la imagen de la compensación 0x10eb4
: Longitud 1728 de la imagen: resolución de 2376
: 200, 200 pixeles/pedacitos/muestra del inch
: esquema de la compresión de 1
: Interpretación fotométrica del grupo 4
del CCITT: minuto-es-white
FillOrder: lsb--msb
: Descripción de la imagen del
de la “entrada estándar ": orientación del
“del archivo convertido de PBM ": tapa de la fila 0, muestras/pixel del lhs
de la columna 0: filas/tira de 1
: configuración planar de 2376
: solo plane
TYPE de la imagen: ad \ tiffs \ filename2.tif del
C:\Users\ddecker\Desktop\D: directorio del
TIFF en la anchura de la imagen de la compensación 0x4aac
: Longitud 1728 de la imagen: resolución de 2376
: 200, 200 pixeles/pedacitos/muestra del inch
: esquema de la compresión de 1
: Interpretación fotométrica del grupo 4
del CCITT: minuto-es-white
FillOrder: lsb--msb
: Descripción de la imagen del
de la “entrada estándar ": orientación del
“del archivo convertido de PBM ": tapa de la fila 0, muestras/pixel del lhs
de la columna 0: filas/tira de 1
: configuración planar de 2376
: solo plane
TYPE de la imagen: ad \ tiffs \ filename3.tif del
C:\Users\ddecker\Desktop\D: directorio del
TIFF en el tipo del subarchivo de la compensación 0x8
: (0 = 0x0) anchura de la imagen del
: Longitud de 124 imágenes: resolución de 124
: 31, 31 pixeles/pedacitos/muestra del inch
: esquema de la compresión de 8
: Interpretación fotométrica de None
: Software del color
del RGB: muestras/pixel del
del “¼ ": filas/tira de 3
: configuración planar de 55
: el solo plane

Basically de la imagen el programa va a través y trata cada sección o “bloque” entre cada “TIPO: ” secciones.  Así pues, cada vez que el programa considera el “TIPO: ”, lo trata como un nuevo “fijó”, y realiza el código visto en el Perl code.

If que usted mira los comentarios, allí es una cierta información para el repaso de las faltas.  Mi problema es el hecho de que cuando el programa comienza con toda la información necesaria, pero por otra parte el segundo bloque tiene información que falta, después no trabaja.  Por ejemplo, recoger esta muestra de data.txt (diferente de arriba; filename2.tif es muestra/pixel que falta.):

TYPE: ad \ tiffs \ filename.tif del
C:\Users\ddecker\Desktop\D: directorio del
TIFF en la anchura de la imagen de la compensación 0x10eb4
: Longitud 1728 de la imagen: resolución de 2376
: 200, 200 pixeles/pedacitos/muestra del inch
: esquema de la compresión de 1
: Interpretación fotométrica del grupo 4
del CCITT: minuto-es-white
FillOrder: lsb--msb
: Descripción de la imagen del
de la “entrada estándar ": orientación del
“del archivo convertido de PBM ": tapa de la fila 0, muestras/pixel del lhs
de la columna 0: filas/tira de 1
: configuración planar de 2376
: solo plane
TYPE de la imagen: ad \ tiffs \ filename2.tif del
C:\Users\ddecker\Desktop\D: directorio del
TIFF en la anchura de la imagen de la compensación 0x4aac
: Longitud 1728 de la imagen: resolución de 2376
: 200, 200 pixeles/pedacitos/muestra del inch
: esquema de la compresión de 1
: Interpretación fotométrica del grupo 4
del CCITT: minuto-es-white
FillOrder: lsb--msb
: Descripción de la imagen del
de la “entrada estándar ": orientación del
“del archivo convertido de PBM ": tapa de la fila 0, filas/tira del lhs
de la columna 0: configuración planar de 2376
: solo plane
TYPE de la imagen: ad \ tiffs \ filename3.tif del
C:\Users\ddecker\Desktop\D: directorio del
TIFF en el tipo del subarchivo de la compensación 0x8
: (0 = 0x0) anchura de la imagen del
: Longitud de 124 imágenes: resolución de 124
: 31, 31 pixeles/pedacitos/muestra del inch
: esquema de la compresión de 8
: Interpretación fotométrica de None
: Software del color
del RGB: muestras/pixel del
del “¼ ": filas/tira de 3
: configuración planar de 55
: el solo plane

Normal de la imagen hecho salir para el programa es el siguiente:

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

However, al faltar los datos de antedicho debe ser:

Processing filename.tif
[ERROR]: Datos de la muestra/de los pixeles para filename2.tif no found.
[Info]: filename.tif no fue procesado, demasiado registro saved.

HOWEVER, él de errors.
Processing filename3.tif
Error no está haciendo esto, la salida es: los medios del

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

Which, de que cuando comienza con un buen expediente, y entonces golpean un expediente del “malo” o de los “datos perdidos”, piensa que es buenos datos por algunas razones, y que los trata como bueno y que procesa los datos.  Si quito TODO de “TIPO: … NOMBRE DE FICHERO… y directorio del tiff en la compensación 0x4aac”, de un expediente, ENTONCES ve los errores.  No tiene ningún sentido.  Ver este ejemplo:

TYPE: ad \ tiffs \ filename.tif del
C:\Users\ddecker\Desktop\D: directorio del
TIFF en la anchura de la imagen de la compensación 0x10eb4
: Longitud 1728 de la imagen: resolución de 2376
: 200, 200 pixeles/pedacitos/muestra del inch
: esquema de la compresión de 1
: Interpretación fotométrica del grupo 4
del CCITT: minuto-es-white
FillOrder: lsb--msb
: Descripción de la imagen del
de la “entrada estándar ": orientación del
“del archivo convertido de PBM ": tapa de la fila 0, muestras/pixel del lhs
de la columna 0: filas/tira de 1
: configuración planar de 2376
: solo plane
TYPE de la imagen: ad \ tiffs \ filename2.tif del
C:\Users\ddecker\Desktop\D: directorio del
TIFF en la compensación 0x4aac
TYPE: ad \ tiffs \ filename3.tif del
C:\Users\ddecker\Desktop\D: directorio del
TIFF en el tipo del subarchivo de la compensación 0x8
: (0 = 0x0) anchura de la imagen del
: Longitud de 124 imágenes: resolución de 124
: 31, 31 pixeles/pedacitos/muestra del inch
: esquema de la compresión de 8
: Interpretación fotométrica de None
: Software del color
del RGB: muestras/pixel del
del “¼ ": filas/tira de 3
: configuración planar de 55
: la sola salida del plane

The de la imagen es como sigue:

Processing filename.tif
[ERROR]: Anchura para filename2.tif no found.
[ERROR]: Longitud para filename2.tif no found.
[ERROR]: Resolución para filename2.tif no found.
[Info]: filename2.tif no fue procesado, demasiado registro saved.

So de errors.
Processing filename3.tif
Error, básicamente, cuando no hay datos presentes para un expediente, él trabaja, pero cuando 1 o más valor (pero no TODO) faltar para un expediente que sea necesario para la salida, él la trata pues ningún errors.

Can cualquier persona vertió una cierta luz en this.
class= > " claro " 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;

Manijas de archivo de salida del ## (abrirse)
abrirse (OUT1, “> \!”. $state.$status. “INFO.txt”) o mueren “no pueden abrirse \!”. $state.$status. “INFO.txt: ¡$! ”; 
abrirse (OUT2, “> \!”. $state.$status. “INFOspdsht.txt”) o mueren “no pueden abrirse \!”. $state.$status. ¡“INFO.txt $! ”;
¡abrirse (ERRLOG, “> \! ¡errors.log”) o mueren “no pueden abrirse! ¡errors.log $! ”;

Jefes de la impresión del ## al archivo del spdsht
impresión OUT2 “; ; ; ; Whitespace; ; DPI vuelven a clasificar según el tamaño; ; ; \ n”;
nombre de fichero de la impresión OUT2 “; Comp; AlphCnl; Foto; Wid; Len; Res 0; x0; ; ; MB \ n”;

Datos de configuración del ## para la salida de datos que enmascara
mi %config = (
    ” El => “de “LZW colorea”,
    ” El => “de “Lempel-Ziv y de la codificación galesa colorea”,
    El “CCITT agrupa 4” el => “bkwhts”,
    El “CCITT agrupa => “bkwhts” de la codificación” de 4 facsímiles,
    “Ninguno” => “ningunos”,
    “ningunos” => “ningunos”,
    “El => “del color del RGB” colorea”,
    => “minuto-ser-blanco” “bkwhts”,
    => “minuto-ser-negro” “bkwhts”,
    “el => “del color de la gama de colores” (RGB del colormap) colorea”,
    Submarino del => de la “resolución” {
                                            mi @r = partió (/,/, cambio);
                                            0] s \ D//g del =~ de $r [;
                                            1] s \ D//g del =~ de $r [;
                                            @r de vuelta [0.1];
    },
);

mi @config = llaves %config;

mi $file = $infile; # fijar esto según lo necesitado.

¡abrir mi $fh, “<”, $file o morir “no puede abrir <$file> para la lectura $! ”;

$ = “TIPO: \ n”;
mientras que (mi $record = <$fh>) {
    chomp $record;
    después si eq de $record '';
    s del =~ de $record (directorio del tiff en la compensación. +) \ n;
	
	Uso futuro del ##, para incrementar errores
	$errorCount = 0;

    mi ($fullpath, $data) = partir (/\ n, $record, 2);
    s del =~ de $fullpath: $;

    mi ($drv, $path, $file) = archivo:: Spec->splitpath ($fullpath);

	El ## consigue datos del esquema de la compresión
	$cs = $config {$1} si (esquema de la compresión del s \ de s del =~ de $data {2}: \ s+ (. *?)\ n);
	¡si (! $cs definido) {
		impresión “[ERROR]: Esquema de la compresión para $file no encontrado. \ n”;
		impresión ERRLOG “[ERROR]: Esquema de la compresión para $file no encontrado. \ n”;
		$errorCount++;
		#next;
	}	
 	
 	El ## consigue datos fotométricos de la interpretación
 	$pi = $config {$1} si (interpretación fotométrica del s \ de s del =~ de $data {2}: \ s+ (. *?)\ n);
    ¡si (! $pi definido) {
    	impresión “[ERROR]: Interpretación fotométrica para $file no encontrado. \ n”;
    	impresión ERRLOG “[ERROR]: Interpretación fotométrica para $file no encontrado. \ n”;
    	$errorCount++;
    	#next;
    }
    
    El ## consigue datos de los pedacitos/de la muestra
    $bits = $1 si (s del =~ de $data \ pedacitos \ /Sample de s {2}: \ s+ (. *?)\ n);
    ¡si (! $bits definido) {
    	impresión “[ERROR]: Datos de los pedacitos/de la muestra para $file no encontrado. \ n”;
    	impresión ERRLOG “[ERROR]: Datos de los pedacitos/de la muestra para $file no encontrado. \ n”;
    	$errorCount++;
    	#next;
    }
    
    El ## consigue datos de las muestras/del pixel
    $pixels = $1 si (muestras \ /Pixel del s \ de s del =~ de $data 2} {: \ s+ (. *?)\ n);
    ¡si (! $pixels definido) {
    	impresión “[ERROR]: Datos de las muestras/del pixel para $file no encontrado. \ n”;
    	impresión ERRLOG “[ERROR]: Datos de las muestras/del pixel para $file no encontrado. \ n”;
    	$errorCount++;
    	#next;
    }
    
    El ## consigue el valor de AlphaChnl (pedacitos * los pixeles)
    $alphachnl = $bits * $pixels;
    si (== de $alphachnl 1) {
    	$alphachnl = “bkwhts”;
    }
    elsif (== de $alphachnl 8) {
    	$alphachnl = “colorea”;
    }
    elsif (== 24 de $alphachnl) {
    	$alphachnl = “doLOGO”;
    }
    {
    	$alphachnl = “unknwn”;
    }
    
    El ## consigue datos de la resolución
    mi @r = $config {“resolución”} - > ($1) si (resolución del s \ de s del =~ de $data {2}: \ s+ (. *?)\ n);
    
    El ## consigue datos de la anchura/de la longitud
    mi ($w, $l) = ($1, $2) si (s del =~ de $data \ anchura de la imagen de s {2}: (\ d+) longitud de la imagen: ) \ n (\ d+);
    
    Anchura del ##
	¡si (! $w) definido {
		impresión “[ERROR]: Anchura para $file no encontrado. \ n”;
		impresión ERRLOG “[ERROR]: Anchura para $file no encontrado. \ n”;
		$errorCount++;
		#next;
	}

    Longitud del ##
	¡si (! $l) definido {
		impresión “[ERROR]: Longitud para $file no encontrado. \ n”;
		impresión ERRLOG “[ERROR]: Longitud para $file no encontrado. \ n”;
		$errorCount++;
		#next;
	}
	
	Resolución del ##
	¡si (! $r definido [0] || ¡! $r definido [1]) {
		impresión “[ERROR]: Resolución para $file no encontrado. \ n”;
		impresión ERRLOG “[ERROR]: Resolución para $file no encontrado. \ n”;
		$errorCount++;
		#next;
	}	
		
	El ## consigue el tamaño del TIF (F) los archivos
	mi $filesize = (-)/(de s $fullpath 1024 * 1024);
    mi $size_in_mb = sprintf “%.2f”, $filesize;
    
    Cheque de error del ##
    si ($errorCount > 0) {
    	impresión “[Info]: $file no fue procesado, demasiados errores. \ n”;
    	después;
    }
    
    s \ n$//del =~ de $data;

	## ** para el depuración - impresiones a defender **
    la impresión $ del ##, ensambla (“: ”, $file, $cs, $bits, $pi, $w, $l, @r, $size_in_mb, “\ n”), $data,” \ n ";
    impresión “que procesa $file \ n”;

    la impresión OUT1 $, ensambla (“; ”, $file, $cs, $bits, $pixels, $pi, $w, $l, @r, $size_in_mb, “\ n”), $data,” \ n ";
    
    Salida del LA del ##
    si (eq “LA” de $state) {
    	impresión OUT2 “$file; ”, “$cs; ”, “$alphachnl; ”, “$pi; ”, “$w; ”, “$l; ”, “$r [0]; $r [1]; ; ; ”, “$size_in_mb; ; ”, “\ '$batch; ; ; ; ”, “comienzo; ”, “$file; ; ; ; ; ; ; ; ; ; ”, “$size_in_mb; ”, “movimiento; ”, “$file; ”, “\ \ hecho de $dir_root; ”, “\ n”;	
    }
    Salida del nanómetro del ##
    elsif (eq “nanómetro” de $state) {
    	impresión OUT2 “$file; ”, “$cs; ”, “$alphachnl; ”, “$pi; ”, “$w; ”, “$l; ”, “$r [0]; $r [1]; ; ; ”, “$size_in_mb; ; ”, “\ '$batch; ; ; ; ”, “comienzo; ”, “$file; ”, “$size_in_mb; ”, “movimiento; ”, “$file; ”, “\ \ hecho de $dir_root; ”, “\ n”;
    	después;
    }
    Salida del ## OK/UT
    elsif (eq de $state “ACEPTABLE” || eq “UT” de $state) {
    	impresión OUT2 “$file; ”, “$cs; ”, “$alphachnl; ”, “$pi; ”, “$w; ”, “$l; ”, “$r [0]; $r [1]; ; ; ”, “$size_in_mb; ; ”, “\ '$batch; ; ; ; ”, “comienzo; ”, “$file; ”, “$size_in_mb; ”, “movimiento; ”, “$file; ”, “\ \ hecho de $dir_root; ”, “comienzo; ”, $file. “f; ”, “movimiento; ”, $file. “f; ”, “$dir_root \ \ \ hecho \ TEMPdone; ”, “\ n”;
    	después;
    }
    Salida del ## TX/WY
    elsif (eq “TX” de $state || eq “WY” de $state) {
    	impresión OUT2 “$file; ”, “$cs; ”, “$alphachnl; ”, “$pi; ”, “$w; ”, “$l; ”, “$r [0]; $r [1]; ”, “\ \ $file \ \ $cs \ \ $file $dir_root del movimiento $dir_root; ; ”, “$size_in_mb; ; ”, “\ '$batch; ; ; ”, “comienzo; ”, “\ \ $file \ \ $cs de $dir_root; ”, “$file; ”, “$size_in_mb; ”, “movimiento; ”, “\ \ $file \ \ $cs de $dir_root; ”, “\ \ hecho de $dir_root; ”, “comienzo; ”, $file. “f; ”, “movimiento; ”, $file. “f; ”, “$dir_root \ \ \ hecho \ TEMPdone; ”, “\ n”;
    	después;
    }
    elsif (eq de $state “NINGUNOS” || eq de $state”--“ || eq de $state “OTRO”) {
    	impresión OUT2 “$file; ”, “$cs; ”, “$alphachnl; ”, “$pi; ”, “$w; ”, “$l; ”, “$r [0]; $r [1]; ”, “$size_in_mb \ n”;
    	después;
    }
}

cerrarse (OUT1) o morir “no puede cerrar out1: ¡$! ”; 
cerrarse (OUT2) o morir “no puede cerrar out2: ¡$! ”; 
cerrarse (ERRLOG) o morir “no puede cerrar el registro de errores: ¡$! ”;
cerrarse ($fh) o morir “no puede cerrar $fh: ¡$! ”;
class= del

Respuesta : Edición de la iteración del Perl

¿Es el email address el ÚNICO artículo en ese campo de nota? I " m que lo apuesta no es, así que usted tendría que tener cierto método para encontrar ese email address en el campo de nota, y AFAIK allí no es ninguna acción macra del builtin que hará que - usted necesitará utilizar las expresiones regulares, que pueden evaluar una secuencia de texto/un archivo y volverle una secuencia emparejada, basadas en “la expresión” le fuente.

El código atado abajo hará esto. Apenas la copia/la goma esos artículos en un nuevo módulo estándar (nombre que los basTextFunctions del módulo, o algo similar), y entonces utiliza la función de FindEmailInString para volver el primer email address localizó en la secuencia. Para hacer que, si se asume que le tener una forma en la cual el campo de nota esté presente, usted podría incluir un botón para demostrar el valor:

Sub MyButton_Click ()
  Msgbox FindEmailInString (Me.YourMemoField)
Submarino del extremo

Observar el código para esa expresión regular vino de la página excelente de Juan Nurick aquí: http://www.j.nurick.dial.pipex.com/Code/index.htm

Para leer más sobre expresiones regulares, ver nuestro propio el artículo de Patrick Matthew sobre el 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:
Función pública FindEmailInString (StringToSearch como secuencia) como secuencia

sExp dévil como secuencia

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

Función del final
rgxExtract público de la función (blanco opcional de ByVal como variante, _
    Patrón opcional como la secuencia = "", _
    Artículo opcional de ByVal como de largo = 0, _
    Con diferenciación entre mayúsculas y minúsculas opcional como boleano = falso, _
    FailOnError opcional como boleano = verdad, _
    Opcional persistir como boleano = falso) _
  Como variante
   
  'Función que empareja de la expresión regular conveniente para el uso
  'en VB/A generalmente y en preguntas del acceso.
  'Por Juan Nurick. 14 de enero de 06 actualizado.
   
  'Toma una secuencia de búsqueda (blanco) y una expresión regular
  '(Patrón), y una discusión opcional del artículo.
  '- Si se omite el artículo y una subsecuencia de la blanco empareja el patrón,
  '  vueltas que subsecuencia.
  '- Si el patrón incluye agrupar paréntesis, una subsecuencia de la blanco
  '  empareja el patrón, y el artículo es un número entero, vuelve el submatch
  '  especificado por Item (el primer submatch es el punto 0). Si no hay
  '  bastantes submatches, falta de información de las vueltas. Valores negativos del comienzo del artículo
  '  contando con el submatch pasado.
  '- Si ningún fósforo, vueltas anula.
  '- Las vueltas anulan en error a menos que FailOnError sea verdad.
  '  Empareja siempre contra la blanco entera (es decir global y
  '  Multilínea ser verdad).
  
  'Fósforos con diferenciación entre mayúsculas y minúsculas sin importar caso.
 
  'Persisten los controles si el objeto compilado de RegExp
  'permanece en la memoria lista para la llamada siguiente a
  'función o si está dispuesta inmediatamente. Esto
  'significa que la función se puede utilizar en preguntas sin tener
  'para crear, compilar, utilizar y destruir un nuevo objeto de RegExp para
  'cada fila que es procesada. Pero también significa que el objeto
  los 'restos en memoria después de la pregunta han funcionado. Para destruir
  'oponerse y lanzar la memoria, llaman esta función una
  'vez última sin discusiones.
  '
  'Llamando la función con diversas discusiones (e.g. un nuevo
  El 'patrón) recompiles el objeto de RegExp, tan
  'la función se puede utilizar en diversas preguntas. Al menos allí
  'pueden ser los problemas si dos hilos de rosca están llamando la función en
  'el mismo tiempo.
 
  rgxPROC_NAME de Const = “rgxExtract”
  Mineral estático como objeto 'VBScript_RegExp_55.RegExp
    Los 'medios estáticos de la declaración no tenemos que crear
    'y compilar el objeto de RegExp cada sola hora
    'se llama la función.
  oMatches déviles como objeto 'VBScript_RegExp_55.MatchCollection
   
  En el error ErrHandler indicado
  valor de vuelta del defecto del rgxExtract = de la falta de información '
    'NOTA: si FailOnError es falso, vuelve la falta de información en error
 
  Si IsMissing (blanco) entonces
    'Ésta es la señal de disponer del mineral
    Fijar el mineral = nada
    Salir la función 'con el valor prefijado
  Terminar si
   
  'Crear el objeto de RegExp en caso de necesidad
  Si el mineral entonces no es nada
    Fijar el mineral = CreateObject (“VBScript.Regexp”)
  Terminar si
 
  Con el mineral
    'Comprobar si las discusiones actuales (con excepción de blanco)
    'ser diferente de ésos almacenados en mineral, y ponerlos al día
    '(de tal modo recompiling el regex) solamente en caso de necesidad.
    Si es con diferenciación entre mayúsculas y minúsculas = .IgnoreCase entonces
      .IgnoreCase = no .IgnoreCase
    Terminar si
    . Global = verdad
    . Multilínea = verdad
'    Si es multilínea <> . Multilínea entonces
'      . Multilínea = multilínea
'    Terminar si
    Si patrón <> . Patrón entonces
      . Patrón = patrón
    Terminar si
 
  'Finalmente, ejecutar el fósforo
    Si IsNull (blanco) entonces
      rgxExtract = falta de información
    
      Fijar los oMatches = oRE.Execute (la blanco)
      Si oMatches.Count > 0 entonces
        Si oMatches (0) .SubMatches.Count = 0 entonces
          'Ningún () grupo en patrón: volver el fósforo
          Si artículo < 0="" Then="">= oMatches.Count
              El 'artículo positivo excedió el número de fósforos
              rgxExtract = falta de información
              Si FailOnError entonces
                Err.Raise 9
              Terminar si
            Encajonar 
              rgxExtract = oMatches (artículo)
          Extremo selecto
         
          'Hay uno o más () grupos capturados en patrón
              'volver el que está especificado por Item
          Con los oMatches (0) .SubMatches
            Si artículo < 0="" Then="">=. Cuenta
                El 'artículo positivo excedió el número de submatches
                rgxExtract = falta de información
                Si FailOnError entonces
                  Err.Raise 9
                Terminar si
              Encajonar el 'número de artículo válido
                rgxExtract =. Artículo (artículo)
            Extremo selecto
          Extremo con
        Terminar si
      
        rgxExtract = falta de información
      Terminar si
    Terminar si
  Terminar con
 
  'Poner en orden y salida normal
  Si no persiste el mineral entonces fijado = nada
  Salir la función
 
ErrHandler:
  Si FailOnError entonces
    Con errar
      Seleccionar el caso. Número
        'Substituir el mensaje del “error objeto-definido” del defecto
        Caso 9: . Descripción = “subíndice fuera de la gama (el _ pedido del número de artículo”
          y “era mayor que el número de fósforos encontrados, o que el número” de _
          y “(...) el agrupar/que captura paréntesis en el patrón).”
        Caso 13: . Descripción = “tipo unión mal hecha, probablemente porque” _
          y “la discusión del "" de la blanco del "" no se podía convertir a una secuencia”
        Caso 5017: . Descripción = “error de sintaxis en la expresión regular”
        Caso 5018: . Descripción = “cuantificador inesperado en la expresión regular”
        Caso 5019: . Descripción = “esperado “]” en la expresión regular "
        Caso 5020: . Descripción = “esperado ")” en la expresión regular "
      Caso 
        Si el mineral no es nada entonces 'no podido para crear el objeto de Regexp
          . La descripción = “no podía crear el objeto de VBScript.RegExp. ” Y Err.Description
        'Error inesperado
          . Descripción = rgxPROC_NAME y “: ” y. Descripción
        Terminar si
      Terminar selecto
      Fijar el mineral = nada
      . Levantar Err.Number, rgxPROC_NAME, _
          rgxPROC_NAME y “(): ” y. Descripción
    Extremo con
  'Fall silenciosamente
    Err.Clear
    Fijar el mineral = nada
  Terminar si
Terminar la función
Otras soluciones  
 
programming4us programming4us