Comparaison de révisions

Création d'expression régulières pour les générateurs de microrésumés

Changer de révision

Révision 257959 :

Révision 257959 par Elethiomel le

Révision 228242 :

Révision 228242 par Elethiomel le

Titre :
Création d'expression régulières pour les générateurs de microrésumés
Création d'expression régulières pour les générateurs de microrésumés
Identifiant d'URL :
Création_d'expression_régulières_pour_les_générateurs_de_microrésumés
Création_d'expression_régulières_pour_les_générateurs_de_microrésumés
Étiquettes :
Microrésumés
Contenu :

Révision 257959
Révision 228242
t7    <h2 id="Introduction" name="Introduction">t
8      Introduction
9    </h2>
10    <p>
11      Une expression régulière est un type particulier de chaîne 
>(une séquence de caractères) qui coïncide avec la disposition des 
> caractères dans certaines autres chaînes. Les générateurs de mic 
>rorésumés les emploient pour déterminer les pages sur lesquelles  
>ils savent travailler en comparant l'expression régulière aux URL 
> des pages. 
12    </p>
13    <p>
14      Ce tutoriel propose de créer des expressions régulières cor
>respondant aux URL des pages d'enchères eBay. Les bases de la cré 
>ation d'expressions régulières destinées à sélectionner des URL d 
>evraient vous être familières d'ici la fin de cet article. 
15    </p>
16    <p>
17      Si vous recherchez une documentation complète sur les expre
>ssions régulières, consultez <a href="fr/R%c3%a9f%c3%a9rence_de_J 
>avaScript_1.5_Core/Objets_globaux/RegExp">Référence de JavaScript 
> 1.5 Core:Objets globaux:RegExp</a>. Si vous désirez apprendre à  
>créer un générateur de microrésumé, consultez <a href="fr/Cr%c3%a 
>9ation_d'un_g%c3%a9n%c3%a9rateur_de_micror%c3%a9sum%c3%a9">Créati 
>on d'un générateur de microrésumé</a>. 
18    </p>
19    <h2 id="URL_eBay" name="URL_eBay">
20      URL eBay
21    </h2>
22    <p>
23      Comme celles de nombreux sites, les URL des pages d'enchère
>s sur eBay se composent en général de la chaîne "<a class=" exter 
>nal" href="http://" rel="freelink">http://</a>", d'un nom de doma 
>ine, d'un chemin d'accès à un fichier et de paramètres de requête 
>. Un exemple d'une URL de ventes aux enchères d'un article&nbsp;: 
24    </p>
25    <pre class="eval">
26 <span class="nowiki">http://cgi.ebay.com/ws/eBayISAPI.dll?ViewIt
>em&amp;item=280018439106</span> 
27</pre>
28    <p>
29      Dans cette URL, on peut noter le nom de domaine, "cgi.ebay.
>com", le chemin d'accès au fichier, "/ws/eBayISAPI.dll", et les p 
>aramètres définissant la requête, "?ViewItem&amp;item=28001843910 
>6". 
30    </p>
31    <h2 id="Cibler_une_URL_eBay" name="Cibler_une_URL_eBay">
32      Cibler une URL eBay
33    </h2>
34    <p>
35      Pour cibler cette URL avec une expression régulière, nous a
>vons besoin d'utiliser dans celle-ci des caractères qui coïnciden 
>t avec les caractères de l'URL. La plupart du temps, nous pouvons 
> cibler un caractère de l'URL en utilisant le même caractère dans 
> l'expression régulière. Par exemple, l'expression régulière suiv 
>ante coïncide, et est identique, avec le début de l'URL&nbsp;: 
36    </p>
37    <pre class="eval">
38 <a class=" external" href="http://" rel="freelink">http://</a>
39</pre>
40    <p>
41      Mais certains caractères sont spéciaux dans les expressions
> régulières. Par exemple, un point <tt><b>.</b></tt> coïncide ave 
>c tous les caractères, et un point suivi d'un astérisque <tt><b>. 
>*</b></tt> coïncide avec n'importe quelle combinaison de caractèr 
>es. Quand de tels caractères apparaissent dans une URL, et que no 
>us voulons les cibler dans une expression régulière, nous devons  
>les échapper dans l'expression en les préfixant avec un antislash 
> <tt><b>\</b></tt>. 
42    </p>
43    <p>
44      Voici une expression régulière qui cible notre URL d'exempl
>e&nbsp;: 
45    </p>
46    <pre class="eval">
47 <span class="nowiki">http://cgi\.ebay\.com/ws/eBayISAPI\.dll\?Vi
>ewItem&amp;item=280018439106</span> 
48</pre>
49    <p>
50      Cela ressemble presque à l'identique à l'URL. La seule diff
>érence est que l'expression régulière utilise des antislash avant 
> le point et le point d'interrogation, ces deux caractères ayant  
>une signification particulière dans les expressions régulières. 
51    </p>
52    <h2 id="Cibler_depuis_le_d.C3.A9but_de_l.27URL" name="Cibler_
>depuis_le_d.C3.A9but_de_l.27URL"> 
53      Cibler depuis le début de l'URL
54    </h2>
55    <p>
56      Comme cette expression coïncide avec l'URL, elle correspond
>rait aussi avec d'autres URL contenues dans les paramètres de req 
>uête, comme celle-ci&nbsp;: 
57    </p>
58    <pre class="eval">
59<span class="nowiki">http://www.example.com/redirect.php?url=http
>://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&amp;item=280018439106</ 
>span> 
60</pre>
61    <p>
62      Ce n'est probablement pas ce que vous recherchez, malgré le
>s URLs contenues cet exemple n'est vraisemblablement pas une page 
> d'enchères en tant que telle. Afin de limiter notre expression r 
>égulière à l'URL commençant notre URL d'exemple, nous la préfixer 
>ons avec un caractère d'omission <tt><b>^</b></tt>&nbsp;: 
63    </p>
64    <pre class="eval">
65 <span class="nowiki">^http://cgi\.ebay\.com/ws/eBayISAPI\.dll\?V
>iewItem&amp;item=280018439106</span> 
66</pre>
67    <p>
68      Quand un caractère d'omission est le premier caractère d'un
>e expression régulière, cela signifie que l'expression doit être  
>trouvée au début de la correspondance. Maintenant que notre expre 
>ssion régulière est préfixée avec un caractère d'omission, la cor 
>respondance sera seulement faite sur l'URL à droite du début, com 
>me notre URL d'exemple. 
69    </p>
70    <h2 id="Cibler_plusieurs_URLs" name="Cibler_plusieurs_URLs">
71      Cibler plusieurs URLs
72    </h2>
73    <p>
74      Mais cette expression correspond seulement à l'URL d'une pa
>ge d'enchères d'un seul article. Cela ne fonctionne pas avec tout 
> autre article aux enchères. Pour ce faire, nous devons enlever l 
>a partie spécifique à un article particulier dans l'URL, et laiss 
>er seulement les parties communes à tous les articles. 
75    </p>
76    <p>
77      Pour identifier les parties spécifiques et communes, regard
>ons les URLs de plusieurs autres pages d'enchères&nbsp;: 
78    </p>
79    <pre class="eval">
80 <span class="nowiki">http://cgi.ebay.com/ws/eBayISAPI.dll?ViewIt
>em&amp;item=130017517168</span> 
81 <span class="nowiki">http://cgi.ebay.com/ws/eBayISAPI.dll?ViewIt
>em&amp;item=290019763032</span> 
82 <span class="nowiki">http://cgi.ebay.com/ws/eBayISAPI.dll?ViewIt
>em&amp;item=170019463424</span> 
83</pre>
84    <p>
85      En se basant sur ces exemples, il apparaît que la partie sp
>écifique est le numéro d'article à la fin de l'URL, le reste étan 
>t commun à toutes les URLs. Aussi, enlevons le numéro d'article p 
>our garder l'expression régulière suivante&nbsp;: 
86    </p>
87    <pre class="eval">
88 <span class="nowiki">^http://cgi\.ebay\.com/ws/eBayISAPI\.dll\?V
>iewItem&amp;item=</span> 
89</pre>
90    <h2 id="Pr.C3.A9voir_les_variations_dans_les_param.C3.A8tres_
>de_requ.C3.AAte" name="Pr.C3.A9voir_les_variations_dans_les_param 
>.C3.A8tres_de_requ.C3.AAte"> 
91      Prévoir les variations dans les paramètres de requête
92    </h2>
93    <p>
94      Nous avons maintenant une expression régulière qui cible no
>s quatre exemples. Elle correspondra aussi probablement à d'autre 
>s pages d'enchères. Mais pour la rendre plus robuste, nous devrio 
>ns prévoir la possibilité de variations dans les paramètres de re 
>quête. 
95    </p>
96    <p>
97      Un paramètre nommé est une chaîne sous la forme <code>&lt;n
>ame&gt;=&lt;value&gt;</code>, ou <code>&lt;name&gt;</code> et <co 
>de>&lt;value&gt;</code> sont des chaînes arbitraires. Dans notre  
>URL, "item=280018439106" est le seul paramètre de ce genre. Mais  
>des URLs peuvent contenir de multiples paramètres nommés séparés  
>par des esperluettes <tt><b>&amp;</b></tt>, et les paramètres peu 
>vent apparaître dans n'importe quel ordre. Aussi quoique que le p 
>aramètre "item" semble nécessaire, il pourrait ne pas apparaître  
>immédiatement à droite de "ViewItem". 
98    </p>
99    <p>
100      Par exemple, l'URL suivante est également valide pour le mê
>me article d'enchères&nbsp;: 
101    </p>
102    <pre class="eval">
103 <span class="nowiki">http://cgi.ebay.com/ws/eBayISAPI.dll?ViewIt
>em&amp;foo=bar&amp;item=170019463424</span> 
104</pre>
105    <p>
106      Pour s'accommoder de ces variations dans les paramètres de 
>requête, nous pouvons insérer un point suivi d'un astérisque <tt> 
><b>.*</b></tt> entre "ViewItem&amp;" et "item=" pour cibler toute 
> combinaison de caractères qui pourraient apparaître entre ces de 
>ux chaînes&nbsp;: 
107    </p>
108    <pre class="eval">
109 <span class="nowiki">^http://cgi\.ebay\.com/ws/eBayISAPI\.dll\?V
>iewItem&amp;.*item=</span> 
110</pre>
111    <p>
112      Le point suivi d'un astérisque correspond à n'importe quell
>e combinaison de caractères, y compris s'il n'y a pas de caractèr 
>es. Aussi cela fonctionne si "ViewItem&amp;" et "item=" sont immé 
>diatement à droite l'un de l'autre (comme dans notre URL d'exempl 
>e) aussi bien que s'il y avait quelques caractères entre eux. 
113    </p>
114    <h2 id="Cibler_une_autre_URL_eBay" name="Cibler_une_autre_URL
>_eBay"> 
115      Cibler une autre URL eBay
116    </h2>
117    <p>
118      Nous avons maintenant une expression régulière qui cible de
>s URLs d'enchères, incluant celles avec plusieurs paramètres de r 
>equête, dans n'importe quel ordre. Mais eBay utilise un style d'U 
>RL différent dans certains cas (par exemple dans une page de résu 
>ltats d'une recherche). Voici une URL pour le même article dans u 
>n style différent&nbsp;: 
119    </p>
120    <pre class="eval">
121 <span class="nowiki">http://cgi.ebay.com/Mozilla-Firefox-logo-1-
>inch-pin-badge-button-browser_W0QQitemZ280018439106QQihZ018QQcate 
>goryZ2036QQcmdZViewItem</span> 
122</pre>
123    <p>
124      Pour se conformer à ces URLs, nous pouvons créer une deuxiè
>me expression régulière qui leur correspondront. Comme nous l'avo 
>ns vu, nous devons distinguer les composants de l'URL qui sont sp 
>écifiques de ceux communs à toutes les URLs d'enchères de ce styl 
>e. 
125    </p>
126    <p>
127      Plusieurs autres URLs de ce style&nbsp;:
128    </p>
129    <pre class="eval">
130 <span class="nowiki">http://cgi.ebay.com/Firefox-2002-DVD_W0QQit
>emZ130017517168QQihZ003QQcategoryZ617QQcmdZViewItem</span> 
131 <span class="nowiki">http://cgi.ebay.com/AHM-HO-SCALE-FIREFOX-TA
>NK-CAR_W0QQitemZ290019763032QQihZ019QQcategoryZ19130QQcmdZViewIte 
>m</span> 
132 <span class="nowiki">http://cgi.ebay.com/Inuyasha-anime-pin-of-K
>irara-Kilala-firefox_W0QQitemZ170019463424QQihZ007QQcategoryZ3955 
>7QQcmdZViewItem</span> 
133</pre>
134    <p>
135      En se basant sur ces exemples, il apparaît que toutes les U
>RLs commencent avec <span class="nowiki">"http://cgi.ebay.com/"</ 
>span>, qu'elles contiennent la chaîne "QQitemZ" suivie par le num 
>éro d'article et qu'elles se terminent avec la chaîne "QQcmdZView 
>Item". Nous pouvons donc construire l'expression régulière suivan 
>te pour obtenir cette correspondance&nbsp;: 
136    </p>
137    <pre class="eval">
138 <span class="nowiki">^http://cgi\.ebay\.com/.*QQitemZ.*QQcmdZVie
>wItem</span> 
139</pre>
140    <p>
141      Dans cette expression, nous utilisons <tt><b>.*</b></tt> de
>ux fois, car il y a deux endroits où des caractères changent entr 
>e plusieurs URLs d'enchères. 
142    </p>
143    <h2 id="Manipuler_des_URLs_HTTPS" name="Manipuler_des_URLs_HT
>TPS"> 
144      Manipuler des URLs HTTPS
145    </h2>
146    <p>
147      Note: bien que eBay ne le fasse pas, un site peut parfois r
>endre des pages disponibles avec deux URLs, sécurisée ou non. Par 
> exemple, les deux URLs suivantes pourraient pointer sur la même  
>page&nbsp;: 
148    </p>
149    <pre class="eval">
150 <span class="nowiki">http://www.example.com/index.html</span>
151 <span class="nowiki">https://www.example.com/index.html</span>
152</pre>
153    <p>
154      Pour faire une expression régulière qui cible ces deux page
>s, nous avons juste besoin de commencer l'expression avec "https" 
> et d'ajouter un point d'interrogation <tt><b>?</b></tt> après ce 
>tte chaîne, par exemple&nbsp;: 
155    </p>
156    <pre class="eval">
157 <span class="nowiki">^https?://www\.example\.com/index\.html</sp
>an> 
158</pre>
159    <p>
160      Le point d'interrogation rend le caractère qui le précède o
>ptionnel, ainsi l'expression régulière correspond aussi bien aux  
>chaînes contenant un "s" dans "https" qu'à celles qui n'en contie 
>nnent pas. 
161    </p>
162    <h2 id="Conclusion" name="Conclusion">
163      Conclusion
164    </h2>
165    <p>
166      Si nous incluons ces deux expressions régulières dans un gé
>nérateur de microrésumé pour les pages d'enchère eBay, le générat 
>eur les utilisera pour toutes les pages concernant des articles a 
>ux enchères (au moins toutes les pages que nous avons étudiées ju 
>squ'à présent). 
167    </p>
168    <p>
169      Notez que comme les générateurs de microrésumé sont en lang
>age XML, nous devons échapper les caractères spéciaux inférieur < 
>tt><b>&lt;</b></tt>, supérieur <tt><b>&gt;</b></tt> et esperluett 
>e <tt><b>&amp;</b></tt> en les remplaçant par leur entité équival 
>ente (respectivement <tt>&amp;lt;, &amp;gt;,</tt> et <tt>&amp;amp 
>;</tt>) dans les expressions régulières, quand nous les plaçons d 
>ans un générateur. 
170    </p>
171    <p>
172      Pour les expressions régulières que nous avons créées dans 
>ce tutoriel, le seul caractère spécial que nous devons échapper e 
>st l'esperluette. Voici à quoi pourrait ressembler l'élément &lt; 
>pages&gt; dans un générateur de microrésumé pour les pages d'ench 
>ères eBay&nbsp;: 
173    </p>
174    <pre class="eval">
175 &lt;pages&gt;
176   &lt;include&gt;<span class="nowiki">^http://cgi\.ebay\.com/.*Q
>QitemZ.*QQcmdZViewItem</span>&lt;/include&gt; 
177   &lt;include&gt;<span class="nowiki">^http://cgi\.ebay\.com/ws/
>eBayISAPI\.dll\?ViewItem&amp;amp;.*item=</span>&lt;/include&gt; 
178 &lt;/pages&gt;
179</pre>
180    <p>
181      Pour voir ces expressions régulières en action, installez l
>e générateur de microrésumé pour les pages d'enchères eBay dispon 
>ible dans cette page d'<a class="external" href="http://people.mo 
>zilla.com/~myk/microsummaries/generators/">exemples de générateur 
>s</a>. 
182    </p>
183    <p>
184      <br>
185      <span class="comment">Interwiki Languages Links</span>
186    </p>{{ languages( { "en": "en/Creating_regular_expressions_fo
>r_a_microsummary_generator", "ja": "ja/Creating_regular_expressio 
>ns_for_a_microsummary_generator" } ) }} 

Retour à l'historique