Vos résultats de recherche

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

    Attention: la compatibilité avec Microsummary a été retirée dans Gecko 6.0 (Firefox 6.0 / Thunderbird 6.0 / SeaMonkey 2.3)

    Introduction

    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 microré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.

    Ce tutoriel propose de créer des expressions régulières correspondant 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 devraient vous être familières d'ici la fin de cet article.

    Si vous recherchez une documentation complète sur les expressions régulières, consultez Référence de JavaScript 1.5 Core:Objets globaux:RegExp. Si vous désirez apprendre à créer un générateur de microrésumé, consultez Création d'un générateur de microrésumé.

    URL eBay

    Comme celles de nombreux sites, les URL des pages d'enchères sur eBay se composent en général de la chaîne "http://", d'un nom de domaine, 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 :

     http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&item=280018439106
    

    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 paramètres définissant la requête, "?ViewItem&item=280018439106".

    Cibler une URL eBay

    Pour cibler cette URL avec une expression régulière, nous avons besoin d'utiliser dans celle-ci des caractères qui coïncident 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 suivante coïncide, et est identique, avec le début de l'URL :

     http://
    

    Mais certains caractères sont spéciaux dans les expressions régulières. Par exemple, un point <tt>.</tt> coïncide avec tous les caractères, et un point suivi d'un astérisque <tt>.*</tt> coïncide avec n'importe quelle combinaison de caractères. Quand de tels caractères apparaissent dans une URL, et que nous voulons les cibler dans une expression régulière, nous devons les échapper dans l'expression en les préfixant avec un antislash <tt>\</tt>.

    Voici une expression régulière qui cible notre URL d'exemple :

     http://cgi\.ebay\.com/ws/eBayISAPI\.dll\?ViewItem&item=280018439106
    

    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.

    Cibler depuis le début de l'URL

    Comme cette expression coïncide avec l'URL, elle correspondrait aussi avec d'autres URL contenues dans les paramètres de requête, comme celle-ci :

    http://www.example.com/redirect.php?url=http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&item=280018439106
    

    Ce n'est probablement pas ce que vous recherchez, malgré les 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éfixerons avec un caractère d'omission <tt>^</tt> :

     ^http://cgi\.ebay\.com/ws/eBayISAPI\.dll\?ViewItem&item=280018439106
    

    Quand un caractère d'omission est le premier caractère d'une expression régulière, cela signifie que l'expression doit être trouvée au début de la correspondance. Maintenant que notre expression régulière est préfixée avec un caractère d'omission, la correspondance sera seulement faite sur l'URL à droite du début, comme notre URL d'exemple.

    Cibler plusieurs URLs

    Mais cette expression correspond seulement à l'URL d'une page d'enchères d'un seul article. Cela ne fonctionne pas avec tout autre article aux enchères. Pour ce faire, nous devons enlever la partie spécifique à un article particulier dans l'URL, et laisser seulement les parties communes à tous les articles.

    Pour identifier les parties spécifiques et communes, regardons les URLs de plusieurs autres pages d'enchères :

     http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&item=130017517168
     http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&item=290019763032
     http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&item=170019463424
    

    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 étant commun à toutes les URLs. Aussi, enlevons le numéro d'article pour garder l'expression régulière suivante :

     ^http://cgi\.ebay\.com/ws/eBayISAPI\.dll\?ViewItem&item=
    

    Prévoir les variations dans les paramètres de requête

    Nous avons maintenant une expression régulière qui cible nos quatre exemples. Elle correspondra aussi probablement à d'autres pages d'enchères. Mais pour la rendre plus robuste, nous devrions prévoir la possibilité de variations dans les paramètres de requête.

    Un paramètre nommé est une chaîne sous la forme <name>=<value>, ou <name> et <value> 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>&</tt>, et les paramètres peuvent apparaître dans n'importe quel ordre. Aussi quoique que le paramètre "item" semble nécessaire, il pourrait ne pas apparaître immédiatement à droite de "ViewItem".

    Par exemple, l'URL suivante est également valide pour le même article d'enchères :

     http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&foo=bar&item=170019463424
    

    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>.*</tt> entre "ViewItem&" et "item=" pour cibler toute combinaison de caractères qui pourraient apparaître entre ces deux chaînes :

     ^http://cgi\.ebay\.com/ws/eBayISAPI\.dll\?ViewItem&.*item=
    

    Le point suivi d'un astérisque correspond à n'importe quelle combinaison de caractères, y compris s'il n'y a pas de caractères. Aussi cela fonctionne si "ViewItem&" et "item=" sont immédiatement à droite l'un de l'autre (comme dans notre URL d'exemple) aussi bien que s'il y avait quelques caractères entre eux.

    Cibler une autre URL eBay

    Nous avons maintenant une expression régulière qui cible des URLs d'enchères, incluant celles avec plusieurs paramètres de requête, dans n'importe quel ordre. Mais eBay utilise un style d'URL différent dans certains cas (par exemple dans une page de résultats d'une recherche). Voici une URL pour le même article dans un style différent :

     http://cgi.ebay.com/Mozilla-Firefox-logo-1-inch-pin-badge-button-browser_W0QQitemZ280018439106QQihZ018QQcategoryZ2036QQcmdZViewItem
    

    Pour se conformer à ces URLs, nous pouvons créer une deuxième expression régulière qui leur correspondront. Comme nous l'avons vu, nous devons distinguer les composants de l'URL qui sont spécifiques de ceux communs à toutes les URLs d'enchères de ce style.

    Plusieurs autres URLs de ce style :

     http://cgi.ebay.com/Firefox-2002-DVD_W0QQitemZ130017517168QQihZ003QQcategoryZ617QQcmdZViewItem
     http://cgi.ebay.com/AHM-HO-SCALE-FIREFOX-TANK-CAR_W0QQitemZ290019763032QQihZ019QQcategoryZ19130QQcmdZViewItem
     http://cgi.ebay.com/Inuyasha-anime-pin-of-Kirara-Kilala-firefox_W0QQitemZ170019463424QQihZ007QQcategoryZ39557QQcmdZViewItem
    

    En se basant sur ces exemples, il apparaît que toutes les URLs commencent avec "http://cgi.ebay.com/", qu'elles contiennent la chaîne "QQitemZ" suivie par le numéro d'article et qu'elles se terminent avec la chaîne "QQcmdZViewItem". Nous pouvons donc construire l'expression régulière suivante pour obtenir cette correspondance :

     ^http://cgi\.ebay\.com/.*QQitemZ.*QQcmdZViewItem
    

    Dans cette expression, nous utilisons <tt>.*</tt> deux fois, car il y a deux endroits où des caractères changent entre plusieurs URLs d'enchères.

    Manipuler des URLs HTTPS

    Note: bien que eBay ne le fasse pas, un site peut parfois rendre des pages disponibles avec deux URLs, sécurisée ou non. Par exemple, les deux URLs suivantes pourraient pointer sur la même page :

     http://www.example.com/index.html
     https://www.example.com/index.html
    

    Pour faire une expression régulière qui cible ces deux pages, nous avons juste besoin de commencer l'expression avec "https" et d'ajouter un point d'interrogation <tt>?</tt> après cette chaîne, par exemple :

     ^https?://www\.example\.com/index\.html
    

    Le point d'interrogation rend le caractère qui le précède optionnel, ainsi l'expression régulière correspond aussi bien aux chaînes contenant un "s" dans "https" qu'à celles qui n'en contiennent pas.

    Conclusion

    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érateur les utilisera pour toutes les pages concernant des articles aux enchères (au moins toutes les pages que nous avons étudiées jusqu'à présent).

    Notez que comme les générateurs de microrésumé sont en langage XML, nous devons échapper les caractères spéciaux inférieur <tt><</tt>, supérieur <tt>></tt> et esperluette <tt>&</tt> en les remplaçant par leur entité équivalente (respectivement <tt>&lt;, &gt;,</tt> et <tt>&amp;</tt>) dans les expressions régulières, quand nous les plaçons dans un générateur.

    Pour les expressions régulières que nous avons créées dans ce tutoriel, le seul caractère spécial que nous devons échapper est l'esperluette. Voici à quoi pourrait ressembler l'élément <pages> dans un générateur de microrésumé pour les pages d'enchères eBay :

     <pages>
       <include>^http://cgi\.ebay\.com/.*QQitemZ.*QQcmdZViewItem</include>
       <include>^http://cgi\.ebay\.com/ws/eBayISAPI\.dll\?ViewItem&amp;.*item=</include>
     </pages>
    

    Pour voir ces expressions régulières en action, installez le générateur de microrésumé pour les pages d'enchères eBay disponible dans cette page d'exemples de générateurs.


    Interwiki Languages Links

    Étiquettes et contributeurs liés au document

    Étiquettes :
    Contributeurs ayant participé à cette page : Fredchat, Planche, FredB, Elethiomel, Mgjbot, Kyodev
    Dernière mise à jour par : FredB,