Ma question est simple et concerne l'échappement des expressions régulières. Doit-on échapper une barre oblique /
dans une expression régulière ? Et comment vous y prendriez-vous ?
Peut-être, mais ici ils utilisent perl.
Ma question est simple et concerne l'échappement des expressions régulières. Doit-on échapper une barre oblique /
dans une expression régulière ? Et comment vous y prendriez-vous ?
Quel contexte/langue ? Certaines langues utilisent /
comme délimiteur de motif, donc oui, vous devez l'échapper, selon la langue/le contexte. Vous l'échappez en plaçant une barre oblique inversée devant lui : \/
Dans certains langages (comme PHP), vous pouvez utiliser d'autres caractères comme délimiteur et vous n'avez donc pas besoin de les échapper. Mais AFAIK, dans tous les langages, la seule signification spéciale du caractère /
a est qu'il peut être le délimiteur de motif désigné.
Voici quelques options :
En Perl, vous pouvez choisir des délimiteurs alternatifs. Vous n'êtes pas limité à m//
. Vous pourriez en choisir un autre, tel que m{}
. Dans ce cas, l'échappement n'est pas nécessaire. En fait, Damian Conway dans "Perl Best Practices" affirme que m{}
est le seul délimiteur alternatif qui devrait être utilisé, et ceci est renforcé par Perl::Critic (sur CPAN). Bien que vous puissiez vous en sortir en utilisant une variété de caractères de délimitation alternatifs, //
et {}
semblent être les plus claires à déchiffrer par la suite. Toutefois, si l'un ou l'autre de ces choix entraîne trop d'échappement, choisissez celui qui se prête le mieux à la lisibilité. Voici des exemples courants m(...)
, m[...]
et m!...!
.
Dans les cas où vous ne pouvez pas ou préférez ne pas utiliser de délimiteurs alternatifs, vous pouvez échapper aux barres obliques avec une barre oblique inverse : m/\/[^/]+$/
par exemple (en utilisant un délimiteur alternatif qui pourrait devenir m{/[^/]+$}
qui peut se lire plus clairement). L'échappement de la barre oblique par une barre oblique inverse est suffisamment courant pour avoir mérité un nom et une page wikipedia : Le syndrome du cure-dents penché . Dans les expressions régulières où il n'y a qu'une seule instance, l'échappement d'une barre oblique peut ne pas être considéré comme une entrave à la lisibilité, mais si cela commence à devenir incontrôlable, et si votre langage permet d'utiliser d'autres délimiteurs comme le fait Perl, ce serait la solution à privilégier.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
1 votes
Quel langage/implémentation d'expression régulière utilisez-vous ?
0 votes
Il est intéressant de noter que je cherchais cette question pour Javascript. Mais mon IDE m'a dit que j'utilisais un échappement inutile. Donc
myStr.replace(/[/:.-]+/gi, '_')
est valide à ma grande surprise. Je pensais que j'allais avoir besoin/[\/:.-]+/gi
. Je n'arrive pas à décider si c'est cool ou déroutant.