Le code Visual Studio met en évidence les littéraux de chaîne avec les préfixes r
et R
différemment:
Match = re.search(r"\d{2} \d{4} \d{2}:\d{2}:\d{2})", Output)
Match = re.search(R"\d{2} \d(4} \d{2}:\d{2}:\d{2})", Output)
Y a-t-il une différence de sens entre ces deux notations? Des conventions différentes sont-elles utilisées pour r
et R
?
Il n'y a pas de différence de sens entre ces notations. Référence :
Les littéraux de chaîne et d'octets peuvent éventuellement être préfixés par une lettre "r" ou "R"; ces chaînes sont appelées chaînes brutes et traitent les barres obliques inverses comme des caractères littéraux
Maintenant, concernant le comportement de VSCode:
{2}
) se produit lorsque l'éditeur suppose que vous écrivez une expression régulière,{2}
) se produit lorsque l'éditeur pense que vous écrivez une chaîne de format, quelque chose comme "{0}, {1}!".format("Hello", "world")
.Cela devient plus évident lorsque nous ajoutons un peu plus de syntaxe:
Maintenant, il semble que VSCode devrait traiter R"literal"
De la même façon que r"literal"
, Mais à la place, il le colore de la même façon que "literal"
, Ce qui est probablement un minuscule bogue que personne n'a repéré parce que tout le monde écrit r
en minuscules.
Correction de commentaire : Ce n'est pas un bug, c'est une fonctionnalité! surligneur VSCode utilise intelligemment le fait que les préfixes r
et R
sont équivalents, et vous permet, au développeur, d'avoir une coloration correcte en adoptant une convention d'utilisation r
pour les chaînes brutes regex et R
pour les chaînes brutes non regex.
Les chaînes brutes sont souvent interprétées comme des expressions régulières. C'est un peu un problème, car en fonction de l'application, ce n'est peut-être pas le cas le plus courant. (...) MagicPython suit une convention selon laquelle un préfixe minuscule r signifie une chaîne d'expression régulière, mais un préfixe R majuscule signifie simplement une chaîne brute sans sémantique d'expression régulière spéciale.
En général, Python est sensible à la casse. Selon la spécification de syntaxe littéral de chaîne , cependant, les préfixes de chaîne peuvent être soit la casse (soit l'ordre). La différence est donc visuelle, bien que la tradition consiste principalement à utiliser des minuscules, et les lettres majuscules peuvent être plus difficiles à distinguer.