Prochaine révision | Révision précédente |
tutoverpass:jour_6_expressions_regulieres_suite [2020/08/17 16:54] – créée admin | tutoverpass:jour_6_expressions_regulieres_suite [2021/01/25 16:14] (Version actuelle) – modification externe 127.0.0.1 |
---|
====== Jour 6 — Expressions régulières (suite) ====== | ====== Jour 6 — Expressions régulières (suite) ====== |
| |
La syntaxe ''[name~"[0-9]"]'' permet de trouver les noms contenant un nombre. On peut préciser le nombre de chiffres successifs avec des accolades. Ainsi la requête suivante trouve les rues dont le nom contient un nombre de 4 chiffres (généralement une année) : | La syntaxe ''[name~"[0-9]"]'' permet de trouver les noms **contenant un nombre**. On peut préciser le **nombre de chiffres** successifs avec des accolades. Ainsi la requête suivante trouve les rues dont le nom contient un nombre de 4 chiffres (généralement une année) : |
| |
<code> | <code> |
</code> | </code> |
| |
Dans le même esprit, ''["addr:housenumber"~"[a-z]"]'' trouve les numéros d'adresses contenant au moins une lettre minuscule. Il est possible de combiner minuscules et majuscules : | Dans le même esprit, ''["addr:housenumber"~"[a-z]"]'' trouve les numéros d'adresses contenant **au moins une lettre** minuscule. Il est possible de combiner minuscules et majuscules : |
| |
<code> | <code> |
</code> | </code> |
| |
retourne tous les numéros finissant par une lettre, mais ne dit rien des caractères précédents qui peuvent aussi être des lettres. Une possibilité est de préciser que l'adresse commence par au moins un chiffre ''(^[0-9]+)'', se termine par une lettre ''([a-zA-Z]$)'', qui peut être séparée ou pas par un espace ''( ?)''. On obtient donc la requête suivante : | retourne tous les numéros finissant par une lettre, mais ne dit rien des caractères précédents qui peuvent aussi être des lettres. Une possibilité est de préciser que l'adresse commence par au moins un chiffre ''(^[0-9]+)'', se termine par une lettre ''([a-zA-Z]$)'', qui peut être **séparée ou pas par un espace** ''( ?)''. On obtient donc la requête suivante : |
| |
<code> | <code> |
L'affichage d'une étiquette est particulièrement utile pour vérifier qu'une expression régulière a bien l'effet attendu. | L'affichage d'une étiquette est particulièrement utile pour vérifier qu'une expression régulière a bien l'effet attendu. |
| |
Si on recherche un **caractère spécial** (notamment les caractères *+.*^$), il est nécessaire « d'échapper » chaque caractère en le faisant précéder de deux ''\'', par exemple pour trouver les commerces dont le nom contient ''...'' : | Si on recherche un **caractère spécial** (notamment les caractères ''*+.*^$''), il est nécessaire « d'échapper » chaque caractère en le faisant précéder de deux ''\'', par exemple pour trouver les commerces dont le nom contient ''%%...%%'' : |
| |
<code> | <code> |
</code> | </code> |
| |
Pour finir, il est possible d'appliquer une expression régulière à la **clef** d'un tag, en plaçant une tilde avant la clef (qui doit alors être placée entre quotes). Cela est très utile pour les clefs utilisant un préfixe ou un suffixe. Cet exemple trouve les voies pour lesquelles un aménagement cyclable est décrit, que ce soit avec la clef ''cycleway'', ''cycleway:left'', '''cycleway:right'' ou ''cycleway:both'', quelle qu'en soit la valeur : | Pour finir, il est possible d'appliquer une expression régulière à la **clef** d'un tag, en plaçant une tilde avant la clef (qui doit alors être placée entre quotes). Cela est très utile pour les clefs utilisant un préfixe ou un suffixe. Cet exemple trouve les voies pour lesquelles un aménagement cyclable est décrit, que ce soit avec la clef ''cycleway'', ''cycleway:left'', ''cycleway:right'' ou ''cycleway:both'', quelle qu'en soit la valeur : |
| |
<code> | <code> |
| |
* Trouvez les rues dont le nom contient une date sous la forme « jour mois année » (ex : 8 mai 1945). | * Trouvez les rues dont le nom contient une date sous la forme « jour mois année » (ex : 8 mai 1945). |
* Trouvez les adresses pour lequel le nom de ville (addr:city) est entièrement en majuscules. | * Trouvez les adresses pour lequel le nom de ville (''addr:city'') est entièrement en majuscules. |
* Trouvez les rues où le stationnement est interdit (voir https://wiki.osm.org/wiki/FR:Key:parking:lane). | * Trouvez les rues où le stationnement est interdit (voir https://wiki.osm.org/wiki/FR:Key:parking:lane). |
| |
© CC-by-sa Carto’Cité | © CC-by-sa Carto’Cité |
| |