Étant donné l'URL (une seule ligne):
http://test.example.com/dir/subdir/file.html
Comment puis-je extraire les parties suivantes à l'aide d'expressions régulières :
L'expression régulière devrait fonctionner correctement même si j'entre l'URL suivante :
http://example.example.com/example/example/example.html
Solution du problème
J'ai quelques années de retard à la fête, mais je suis surpris que personne n'ait mentionné que la spécification Uniform Resource Identifier comporte une section sur l'analyse des URI avec une expression régulière. L'expression régulière, écrite par Berners-Lee, et al., est :
^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?
12 3 4 5 6 7 8 9
Les chiffres de la deuxième ligne ci-dessus ne servent qu'à faciliter la lisibilité ; ils indiquent les points de référence pour chaque sous-expression (c'est-à-dire chaque parenthèse appariée). Nous nous référons à la valeur correspondant à la sous-expression en tant que $. Par exemple, en faisant correspondre l'expression ci-dessus à
http://www.ics.uci.edu/pub/ietf/uri/#Related
donne les correspondances de sous-expression suivantes :
$1 = http:
$2 = http
$3 = //www.ics.uci.edu
$4 = www.ics.uci.edu
$5 = /pub/ietf/uri/
$6 = <undefined>
$7 = <undefined>
$8 = #Related
$9 = Related
Pour ce que ça vaut, j'ai trouvé que je devais échapper aux barres obliques en JavaScript :
^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?
Aucun commentaire:
Enregistrer un commentaire