Question : Issue d'itération de Perl

Voir le code ci-joint.  C'est la partie principale de mon programme de Perl.  Voici mon dossier de data.txt :

TYPE : C:\Users\ddecker\Desktop\D/>ad \ tiffs \ filename.tif : annuaire du
TIFF à la largeur d'image de l'excentrage 0x10eb4
: Longueur 1728 d'image : résolution de 2376
: 200, 200 Pixel/peu de l'inch
/échantillon : arrangement de compression de 1
: Interprétation photométrique du groupe 4
de CCITT : minute-est-white
FillOrder : lsb--msb
: Description d'image du
« d'entrée standard " : orientation du
« de dossier converti de PBM " : dessus de la rangée 0, échantillons du lhs
de la colonne 0/Pixel : rangées de 1
/bande : configuration planaire de 2376
: plane
TYPE d'image : C:\Users\ddecker\Desktop\D/>ad \ tiffs \ filename2.tif : annuaire du
TIFF à la largeur d'image de l'excentrage 0x4aac
: Longueur 1728 d'image : résolution de 2376
: 200, 200 Pixel/peu de l'inch
/échantillon : arrangement de compression de 1
: Interprétation photométrique du groupe 4
de CCITT : minute-est-white
FillOrder : lsb--msb
: Description d'image du
« d'entrée standard " : orientation du
« de dossier converti de PBM " : dessus de la rangée 0, échantillons du lhs
de la colonne 0/Pixel : rangées de 1
/bande : configuration planaire de 2376
: plane
TYPE d'image : C:\Users\ddecker\Desktop\D/>ad \ tiffs \ filename3.tif : annuaire du
TIFF au type de sous-fichier de l'excentrage 0x8
: (0 = 0x0) largeur d'image du
: Longueur de 124 images : résolution de 124
: 31, 31 Pixel/peu de l'inch
/échantillon : arrangement de compression de 8
: Interprétation photométrique de None
: Logiciel du color
de RVB : échantillons du
de « ¼ "/Pixel : rangées de 3
/bande : configuration planaire de 55
: le plane

Basically d'image le programme intervient et traite chaque section ou « bloc » entre chaque « TYPE :  » sections.  Ainsi, chaque fois que le programme voit le « TYPE :  », il le traite comme un nouveau « a placé », et exécute le code vu dans le Perl code.

If que vous regardez les commentaires, là est de l'information pour de contrôle d'erreurs.  Mon problème est le fait que quand le programme commence par toute l'information nécessaire, mais d'autre part le deuxième bloc a l'information absente, puis cela ne fonctionne pas.  Par exemple, prélever cet échantillon de data.txt (différent d'en haut ; filename2.tif est échantillon/Pixel absents.) :

TYPE : C:\Users\ddecker\Desktop\D/>ad \ tiffs \ filename.tif : annuaire du
TIFF à la largeur d'image de l'excentrage 0x10eb4
: Longueur 1728 d'image : résolution de 2376
: 200, 200 Pixel/peu de l'inch
/échantillon : arrangement de compression de 1
: Interprétation photométrique du groupe 4
de CCITT : minute-est-white
FillOrder : lsb--msb
: Description d'image du
« d'entrée standard " : orientation du
« de dossier converti de PBM " : dessus de la rangée 0, échantillons du lhs
de la colonne 0/Pixel : rangées de 1
/bande : configuration planaire de 2376
: plane
TYPE d'image : C:\Users\ddecker\Desktop\D/>ad \ tiffs \ filename2.tif : annuaire du
TIFF à la largeur d'image de l'excentrage 0x4aac
: Longueur 1728 d'image : résolution de 2376
: 200, 200 Pixel/peu de l'inch
/échantillon : arrangement de compression de 1
: Interprétation photométrique du groupe 4
de CCITT : minute-est-white
FillOrder : lsb--msb
: Description d'image du
« d'entrée standard " : orientation du
« de dossier converti de PBM " : dessus de la rangée 0, rangées du lhs
de la colonne 0/bande : configuration planaire de 2376
: plane
TYPE d'image : C:\Users\ddecker\Desktop\D/>ad \ tiffs \ filename3.tif : annuaire du
TIFF au type de sous-fichier de l'excentrage 0x8
: (0 = 0x0) largeur d'image du
: Longueur de 124 images : résolution de 124
: 31, 31 Pixel/peu de l'inch
/échantillon : arrangement de compression de 8
: Interprétation photométrique de None
: Logiciel du color
de RVB : échantillons du
de « ¼ "/Pixel : rangées de 3
/bande : configuration planaire de 55
: le plane

Normal d'image produit pour le programme est le suivant :

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

However, en manquant les données de ci-dessus il devrait être :

Processing filename.tif
[ERREUR] : Données d'échantillon/Pixel pour filename2.tif pas found.
[information] : filename.tif n'a pas été traité, trop de notation saved.

HOWEVER, il d'errors.
Processing filename3.tif
Error ne fait pas ceci, le rendement est : le moyen du

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

Which, celui quand il commence par un bon disque, et frappe alors un disque du « mauvais » ou « de données absentes », il pense que c'est de bonnes données pour quelques raisons, et les traite en tant que bon et traite les données.  Si j'enlève TOUT du « TYPE : … NOM DE FICHIER… et annuaire de tiff à l'excentrage 0x4aac », d'un disque, ALORS il voit les erreurs.  Ne semble aucun raisonnable.  Voir le cet exemple :

TYPE : C:\Users\ddecker\Desktop\D/>ad \ tiffs \ filename.tif : annuaire du
TIFF à la largeur d'image de l'excentrage 0x10eb4
: Longueur 1728 d'image : résolution de 2376
: 200, 200 Pixel/peu de l'inch
/échantillon : arrangement de compression de 1
: Interprétation photométrique du groupe 4
de CCITT : minute-est-white
FillOrder : lsb--msb
: Description d'image du
« d'entrée standard " : orientation du
« de dossier converti de PBM " : dessus de la rangée 0, échantillons du lhs
de la colonne 0/Pixel : rangées de 1
/bande : configuration planaire de 2376
: plane
TYPE d'image : C:\Users\ddecker\Desktop\D/>ad \ tiffs \ filename2.tif : annuaire du
TIFF à l'excentrage 0x4aac
TYPE : C:\Users\ddecker\Desktop\D/>ad \ tiffs \ filename3.tif : annuaire du
TIFF au type de sous-fichier de l'excentrage 0x8
: (0 = 0x0) largeur d'image du
: Longueur de 124 images : résolution de 124
: 31, 31 Pixel/peu de l'inch
/échantillon : arrangement de compression de 8
: Interprétation photométrique de None
: Logiciel du color
de RVB : échantillons du
de « ¼ "/Pixel : rangées de 3
/bande : configuration planaire de 55
: le rendement simple du plane

The d'image est comme suit :

Processing filename.tif
[ERREUR] : Largeur pour filename2.tif pas found.
[ERREUR] : Longueur pour filename2.tif pas found.
[ERREUR] : Résolution pour filename2.tif pas found.
[information] : filename2.tif n'a pas été traité, trop de notation saved.

So d'errors.
Processing filename3.tif
Error, fondamentalement, quand AUCUNE donnée n'est présente pour un disque, il travaille, mais quand 1 valeurs ou plus (mais pas TOUTES) être absent pour un disque qui est nécessaire pour le rendement, il le traite car errors.

Can n'importe qui n'a pas jeté une certaine lumière sur this.
class= > " clair " de
> de " codeSnippet " de class= de
class= " lineNumbers " de
class= de
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= " de l'id= " codeSnippet705652 de
$infile = « data.txt » ;
#$infile = $batOutput ;

Poignées de dossier de rendement de ## (s'ouvrir)
s'ouvrir (OUT1, « > \ ! ». $state.$status. « INFO.txt ») ou meurent « ne peuvent pas s'ouvrir \ ! ». $state.$status. « INFO.txt : $ !  » ; 
s'ouvrir (OUT2, « > \ ! ». $state.$status. « INFOspdsht.txt ») ou meurent « ne peuvent pas s'ouvrir \ ! ». $state.$status. « INFO.txt $ !  » ;
s'ouvrir (ERRLOG, « > \ ! errors.log ») ou meurent « ne peuvent pas s'ouvrir ! errors.log $ !  » ;

En-têtes d'impression de ## au dossier de spdsht
copie OUT2 « ; ; ; ; Whitespace ; ; DPI remettent à la côte ; ; ; \ n » ;
nom de fichier de l'impression OUT2 « ; Élém. ; AlphCnl ; Foto ; Wid ; Len ; Recherche 0 ; x0 ; ; ; Mb \ n » ;

Données de configuration de ## pour le rendement de données de masquage
mon %config = (
     » Le => « de « LZW colore »,
     » Le => « de « Lempel-Ziv et de codage gallois colore »,
    Le « CCITT groupent 4 » le => « bkwhts »,
    Le « CCITT => « bkwhts » groupent de 4 fac-similés codage »,
    « Aucun » => « aucun »,
    « aucun » => « aucun »,
    Le => « « de couleur de RVB » colore »,
    => « minute-être-blanc » « bkwhts »,
    => « minute-être-noir » « bkwhts »,
    le => « de la couleur de palette » (RVB « de colormap) colore »,
    Sous-marin de => de « résolution » {
                                            mon @r = s'est dédoublé (/,/, décalage) ;
                                            0] s \ D//g de =~ de $r [;
                                            1] s \ D//g de =~ de $r [;
                                            @r de retour [0.1] ;
    },
) ;

mon @config = clefs %config ;

mon $file = $infile ; # placer ceci comme nécessaire.

ouvrir mon $fh, « < », $file ou mourir « ne peut pas ouvrir <$file> pour la lecture $ !  » ;

$ = « TYPE : \ n » ;
tandis que (mon $record = <$fh>) {
    chomp $record ;
    après si eq de $record '' ;
    s de =~ de $record (annuaire de tiff à l'excentrage. +) \ n ;
	
	Future utilisation de ##, pour incrémenter des erreurs
	$errorCount = 0 ;

    mon ($fullpath, $data) = dédoubler (/\ n, $record, 2) ;
    s de =~ de $fullpath : $ ;

    mon ($drv, $path, $file) = dossier : : Spec->splitpath ($fullpath) ;

	Le ## obtiennent des données d'arrangement de compression
	$cs = $config {$1} si (arrangement de compression de s \ s de =~ de $data {2} : \ s+ (. * ?)\ n) ;
	si (! $cs défini) {
		copie « [ERREUR] : Arrangement de compression pour $file non trouvé. \ n » ;
		copie ERRLOG « [ERREUR] : Arrangement de compression pour $file non trouvé. \ n » ;
		$errorCount++ ;
		#next ;
	}	
 	
 	Le ## obtiennent des données photométriques d'interprétation
 	$pi = $config {$1} si (interprétation photométrique de s \ s de =~ de $data {2} : \ s+ (. * ?)\ n) ;
    si (! $pi défini) {
    	copie « [ERREUR] : Interprétation photométrique pour $file non trouvé. \ n » ;
    	copie ERRLOG « [ERREUR] : Interprétation photométrique pour $file non trouvé. \ n » ;
    	$errorCount++ ;
    	#next ;
    }
    
    Le ## obtiennent des données de peu/échantillon
    $bits = $1 si (s de =~ de $data \ bits de s {2} \ /Sample : \ s+ (. * ?)\ n) ;
    si (! $bits défini) {
    	copie « [ERREUR] : Données de peu/échantillon pour $file non trouvé. \ n » ;
    	copie ERRLOG « [ERREUR] : Données de peu/échantillon pour $file non trouvé. \ n » ;
    	$errorCount++ ;
    	#next ;
    }
    
    Le ## obtiennent des données d'échantillons/Pixel
    $pixels = $1 si (échantillons de s \ s de =~ de $data 2} {\ /Pixel : \ s+ (. * ?)\ n) ;
    si (! $pixels défini) {
    	copie « [ERREUR] : Données d'échantillons/Pixel pour $file non trouvé. \ n » ;
    	copie ERRLOG « [ERREUR] : Données d'échantillons/Pixel pour $file non trouvé. \ n » ;
    	$errorCount++ ;
    	#next ;
    }
    
    Le ## obtiennent la valeur d'AlphaChnl (peu * les Pixel)
    $alphachnl = $bits * $pixels ;
    si (== de $alphachnl 1) {
    	$alphachnl = « bkwhts » ;
    }
    elsif (== de $alphachnl 8) {
    	$alphachnl = « colore » ;
    }
    elsif (== 24 de $alphachnl) {
    	$alphachnl = « doLOGO » ;
    }
    autrement {
    	$alphachnl = « unknwn » ;
    }
    
    Le ## obtiennent des données de résolution
    mon @r = $config {« résolution »} - > ($1) si (résolution de s \ s de =~ de $data {2} : \ s+ (. * ?)\ n) ;
    
    Le ## obtiennent des données de largeur/longueur
    mon ($w, $l) = ($1, $2) si (s de =~ de $data \ largeur image de s {2} : (\ d+) longueur d'image : ) (\ d+ \ n) ;
    
    Largeur de ##
	si (! $w) défini {
		copie « [ERREUR] : Largeur pour $file non trouvé. \ n » ;
		copie ERRLOG « [ERREUR] : Largeur pour $file non trouvé. \ n » ;
		$errorCount++ ;
		#next ;
	}

    Longueur de ##
	si (! $l) défini {
		copie « [ERREUR] : Longueur pour $file non trouvé. \ n » ;
		copie ERRLOG « [ERREUR] : Longueur pour $file non trouvé. \ n » ;
		$errorCount++ ;
		#next ;
	}
	
	Résolution de ##
	si (! $r défini [0] || ! $r défini [1]) {
		copie « [ERREUR] : Résolution pour $file non trouvé. \ n » ;
		copie ERRLOG « [ERREUR] : Résolution pour $file non trouvé. \ n » ;
		$errorCount++ ;
		#next ;
	}	
		
	Le ## obtiennent la taille de TIF (F) des dossiers
	mon $filesize = (-) de s $fullpath/(1024 * 1024) ;
    mon $size_in_mb = sprintf « %.2f », $filesize ;
    
    Contrôle d'erreur de ##
    si ($errorCount > 0) {
    	copie « [information] : $file n'a pas été traité, trop d'erreurs. \ n » ;
    	après ;
    }
    
    s \ n$//de =~ de $data ;

	## ** pour l'élimination des imperfections - copies à examiner **
    la copie $ de ##, se joignent (« :  », $file, $cs, $bits, $pi, $w, $l, @r, $size_in_mb, « \ n »), $data, » \ n " ;
    copie « traitant $file \ n » ;

    la copie OUT1 $, se joignent (« ;  », $file, $cs, $bits, $pixels, $pi, $w, $l, @r, $size_in_mb, « \ n »), $data, » \ n " ;
    
    Rendement de LA de ##
    si (eq « LA » de $state) {
    	copie OUT2 « $file ;  », « $cs ;  », « $alphachnl ;  », « $pi ;  », « $w ;  », « $l ;  », « $r [0] ; $r [1] ; ; ;  », « $size_in_mb ; ;  », « \ '$batch ; ; ; ;  », « début ;  », « $file ; ; ; ; ; ; ; ; ; ;  », « $size_in_mb ;  », « mouvement ;  », « $file ;  », « \ de $dir_root \ fait ;  », « \ n » ;	
    }
    Rendement de nanomètre de ##
    elsif (eq « nanomètre » de $state) {
    	copie OUT2 « $file ;  », « $cs ;  », « $alphachnl ;  », « $pi ;  », « $w ;  », « $l ;  », « $r [0] ; $r [1] ; ; ;  », « $size_in_mb ; ;  », « \ '$batch ; ; ; ;  », « début ;  », « $file ;  », « $size_in_mb ;  », « mouvement ;  », « $file ;  », « \ de $dir_root \ fait ;  », « \ n » ;
    	après ;
    }
    Rendement du ## OK/UT
    elsif (eq de $state « CORRECT » || eq « UT » de $state) {
    	copie OUT2 « $file ;  », « $cs ;  », « $alphachnl ;  », « $pi ;  », « $w ;  », « $l ;  », « $r [0] ; $r [1] ; ; ;  », « $size_in_mb ; ;  », « \ '$batch ; ; ; ;  », « début ;  », « $file ;  », « $size_in_mb ;  », « mouvement ;  », « $file ;  », « \ de $dir_root \ fait ;  », « début ;  », $file. « f ;  », « mouvement ;  », $file. « f ;  », « $dir_root \ \ \ fait \ TEMPdone ;  », « \ n » ;
    	après ;
    }
    Rendement du ## TX/WY
    elsif (eq « TX » de $state || eq « WY » de $state) {
    	copie OUT2 « $file ;  », « $cs ;  », « $alphachnl ;  », « $pi ;  », « $w ;  », « $l ;  », « $r [0] ; $r [1] ;  », « \ \ \ du mouvement $dir_root \ $file $dir_root \ $cs \ $file ; ;  », « $size_in_mb ; ;  », « \ '$batch ; ; ;  », « début ;  », « \ \ de $dir_root \ $cs \ $file ;  », « $file ;  », « $size_in_mb ;  », « mouvement ;  », « \ \ de $dir_root \ $cs \ $file ;  », « \ de $dir_root \ fait ;  », « début ;  », $file. « f ;  », « mouvement ;  », $file. « f ;  », « $dir_root \ \ \ fait \ TEMPdone ;  », « \ n » ;
    	après ;
    }
    elsif (eq de $state « AUCUN » || eq de $state »--«  || eq de $state « AUTRE ») {
    	copie OUT2 « $file ;  », « $cs ;  », « $alphachnl ;  », « $pi ;  », « $w ;  », « $l ;  », « $r [0] ; $r [1] ;  », « $size_in_mb \ n » ;
    	après ;
    }
}

se fermer (OUT1) ou mourir « ne peut pas clôturer out1 : $ !  » ; 
se fermer (OUT2) ou mourir « ne peut pas clôturer out2 : $ !  » ; 
se fermer (ERRLOG) ou mourir « ne peut pas fermer le registre d'erreurs : $ !  » ;
se fermer ($fh) ou mourir « ne peut pas clôturer $fh : $ !  » ;
class= de

Réponse : Issue d'itération de Perl

L'email address est-il le SEUL article dans ce domaine de note ? I " m le pariant n'est pas, ainsi vous devriez avoir une certaine méthode pour trouver cet email address dans le domaine de note, et AFAIK là n'est aucune macro action de builtin qui suffira que - vous devrez employer les expressions régulières, qui peuvent évaluer une corde des textes/dossier et te renvoyer une corde assortie, basées sur « l'expression » vous approvisionnement.

Le code joint ci-dessous fera ceci. Juste la copie/pâte ces articles dans un nouveau module standard (nom qui des basTextFunctions de module, ou n'importe quoi de pareil), et emploient alors la fonction de FindEmailInString pour renvoyer le premier email address a placé dans la corde. Pour faire que, en vous assumant avoir une forme sur laquelle le champ de note est présent, vous pourriez inclure un bouton pour montrer la valeur :

Substrater MyButton_Click ()
  Msgbox FindEmailInString (Me.YourMemoField)
Sous-marin d'extrémité

Noter le code pour cette expression régulière est venu de l'excellente page de John Nurick ici : http://www.j.nurick.dial.pipex.com/Code/index.htm

Pour lire plus au sujet des expressions régulières, voir le notre propre article de Patrick Matthew sur le repérage 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 :
Fonction publique FindEmailInString (StringToSearch comme corde) comme corde

Faible sExp comme corde

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

Fonction de fin
rgxExtract public de fonction (cible facultative de ByVal comme variante, _
    Modèle facultatif comme corde = "", _
    Article facultatif de ByVal en tant que longtemps = 0, _
    Distinguant majuscules et minuscules facultatif comme booléen = faux, _
    FailOnError facultatif comme booléen = rectifient, _
    Facultatif persister en tant que booléen = faux) _
  Comme variante
   
  'Fonction assortie d'expression régulière appropriée pour l'usage
  'dans VB/A généralement et dans des questions d'accès.
  'Par John Nurick. 14 janvier 06 mis à jour.
   
  'Prend une corde de recherche (cible) et une expression régulière
  '(Modèle), et un argument facultatif d'article.
  '- Si l'article est omis et une sous-chaîne de cible assortit le modèle,
  '  retours qui sous-chaîne.
  '- Si le modèle inclut grouper des parenthèses, une sous-chaîne de cible
  '  assortit le modèle, et l'article est un nombre entier, renvoie le submatch
  '  spécifique par Item (le premier submatch est le point 0). S'il n'y a pas
  '  assez de submatches, nulle de retours. Valeurs négatives de début d'article
  '  comptant avec le dernier submatch.
  '- Si aucune allumette, retours n'annulent.
  '- Les retours annulent sur l'erreur à moins que FailOnError soit vrai.
  '  Assortit toujours contre la cible entière (c.-à-d. global et
  '  Multiligne être vrai).
  
  'Allumettes distinguant majuscules et minuscules indépendamment de cas.
 
  'Persistent les commandes si l'objet compilé de RegExp
  'reste dans la mémoire prête pour le prochain appel au
  'fonction ou si elle est débarrassée immédiatement. Ceci
  'signifie que la fonction peut être employée dans les questions sans avoir
  'pour créer, compiler, utiliser-et détruisent un nouvel objet de RegExp pour
  'chaque rangée étant traitée. Mais il signifie également que l'objet
  les 'restes dans la mémoire après la question ont fonctionné. Pour détruire
  'objecter et libérer la mémoire, appellent cette fonction une
  'la fois passée sans des arguments.
  '
  'Appelant la fonction avec différents arguments (par exemple un nouveau
  Le 'modèle) recompiles l'objet de RegExp, ainsi
  'la fonction peut être employée dans différentes questions. De quelque manière que là
  'peuvent être les problèmes si deux fils appellent la fonction à
  'le même temps.
 
  rgxPROC_NAME de Const = « rgxExtract »
  Minerai statique comme objet 'VBScript_RegExp_55.RegExp
    'Des moyens statiques de déclaration nous ne devons pas créer
    'et compiler l'objet de RegExp chaque seule heure
    'la fonction s'appelle.
  Faibles oMatches comme objet 'VBScript_RegExp_55.MatchCollection
   
  Sur l'erreur ErrHandler GoTo
  valeur de retour de défaut de rgxExtract = de nulle '
    'NOTA: : si FailOnError est faux, renvoie la nulle sur l'erreur
 
  S'IsMissing (cible) puis
    'C'est le signal pour se débarrasser du minerai
    Placer le minerai = rien
    Sortir la fonction 'avec la valeur par défaut
  Finir si
   
  'Créer l'objet de RegExp au besoin
  Si le minerai n'est rien alors
    Placer le minerai = CreateObject (« VBScript.Regexp »)
  Finir si
 
  Avec du minerai
    'Vérifier si les arguments courants (autre que la cible)
    'être différent de ceux stockés en minerai, et les mettre à jour
    '(recompiling de ce fait le regex) seulement au besoin.
    Si distinguant majuscules et minuscules = .IgnoreCase alors
      .IgnoreCase = pas .IgnoreCase
    Finir si
    . Global = rectifier
    . Multiligne = rectifier
'    Si multiligne <> . Multiligne puis
'      . Multiligne = multiligne
'    Finir si
    Si modèle <> . Modèle alors
      . Modèle = modèle
    Finir si
 
  'En conclusion, exécuter l'allumette
    S'IsNull (cible) puis
      rgxExtract = nulle
    Autrement
      Placer les oMatches = l'oRE.Execute (la cible)
      Si oMatches.Count > 0 puis
        Si oMatches (0) .SubMatches.Count = 0 puis
          'No () groupe dans le modèle : renvoyer l'allumette
          Si article < 0="" Then="">= oMatches.Count
              'L'article positif a dépassé le nombre d'allumettes
              rgxExtract = nulle
              Si FailOnError alors
                Err.Raise 9
              Finir si
            Enfermer autrement
              rgxExtract = oMatches (article)
          Extrémité choisie
         
        Autrement  'il y a un ou plusieurs () groupes capturés dans le modèle
              'renvoyer celui spécifique par Item
          Avec les oMatches (0) .SubMatches
            Si article < 0="" Then="">=. Compte
                'L'article positif a dépassé le nombre de submatches
                rgxExtract = nulle
                Si FailOnError alors
                  Err.Raise 9
                Finir si
              Enfermer autrement 'le nombre d'article valide
                rgxExtract =. Article (article)
            Extrémité choisie
          Extrémité avec
        Finir si
      Autrement
        rgxExtract = nulle
      Finir si
    Finir si
  Finir avec
 
  'Ranger et sortie normale
  Sinon persistent le minerai alors réglé = rien
  Sortir la fonction
 
ErrHandler :
  Si FailOnError alors
    Avec errer
      Choisir le cas. Nombre
        'Remplacer le message « d'erreur objet-définie » de défaut
        Affaire 9 : . Description = « indice inférieur hors de gamme (le _ demandé de nombre d'article »
          et « était plus grand que le nombre d'allumettes trouvées, ou que le nombre » de _
          et « (...) groupement/capturant des parenthèses dans le modèle). »
        Affaire 13 : . Description = « type disparité, probablement parce que » _
          et « l'argument de "" de cible de "" n'a pas pu être converti en corde »
        Affaire 5017 : . Description = « erreur de syntaxe dans l'expression régulière »
        Affaire 5018 : . Description = « quantifier inattendu dans l'expression régulière »
        Affaire 5019 : . Description = « prévu « ] » dans l'expression régulière "
        Affaire 5020 : . Description = « prévu ") » dans l'expression régulière "
      Cas autrement
        Si le minerai n'est rien alors 'pour créer l'objet de Regexp
          . La description = « n'a pas pu créer l'objet de VBScript.RegExp.  » Et Err.Description
        Autrement 'erreur inattendue
          . Description = rgxPROC_NAME et « :  » et. Description
        Finir si
      Finir choisi
      Placer le minerai = rien
      . Soulever Err.Number, rgxPROC_NAME, _
          rgxPROC_NAME et « () :  » et. Description
    Extrémité avec
  Autrement 'échouer silencieusement
    Err.Clear
    Placer le minerai = rien
  Finir si
Finir la fonction
Autres solutions  
  •  MS Excel 2007 et pdf - l'exportation vers le pdf prend de longues heures !
  •  Dans le Perl, comment j'ajoute une valeur à la liste, puis le contrôle pour voir si la valeur existent avant d'ajouter une nouvelle valeur
  •  Comment fais j'initialiser de la HP BL460c G6 de san et de la HP XP 240000
  •  Comment fais j'employer une clef de permis de volume sur un ordinateur de HP avec du CD de restauration
  •  Emplacement primaire de deux SCCM dans l'annuaire actif
  •  L'initiateur et la HP D2D de l'iSCSI R2 du serveur 2008 de Windows GERCENT l'issue
  •  Stocker le dossier dans le mysql using connector.net et le champ de goutte
  •  Carte vidéo d'USB - bit 32 sur le matériel travaillant au niveau du bit 64 ?
  •  asp.net que j'essaye de convertir une forme de HTML en forme d'aspx ou ? ce qui jamais. Aide du besoin sur la façon dont à à elle.
  •  Winzip 12 issues de secours du travail ?
  •  
    programming4us programming4us