84 votes

Qu'est-ce qu'une "raw string regex" et comment l'utiliser ?

D'après la documentation python sur expressions rationnelles concernant les '\' caractère :

La solution consiste à utiliser le logiciel Python Les barres obliques inverses ne sont pas gérées de manière particulière dans un littéral de chaîne préfixé par 'r' . Ainsi r"\n" est une chaîne de deux caractères contenant '\' y 'n' , tandis que "\n" i contenant une nouvelle ligne. En général, les motifs sont exprimés en code Python en utilisant cette notation de chaîne brute.

Qu'est-ce que la notation brute des chaînes de caractères ? Si vous utilisez un format de chaîne brute, cela signifie-t-il que "*" est considéré comme un caractère littéral plutôt que comme un indicateur zéro ou plus ? Ce n'est évidemment pas possible, sinon la regex perdrait toute sa puissance. Mais alors, s'il s'agit d'une chaîne de caractères brute, comment reconnaît-elle les caractères de retour à la ligne si "\n" est littéralement une barre oblique inverse et un "n" ?

Je ne suis pas.

Modifier pour la prime :

J'essaie de comprendre comment une regex de chaîne brute correspond aux nouvelles lignes, aux tabulations et aux jeux de caractères, par exemple. \w pour les mots ou \d pour les chiffres ou autres, si les modèles de chaînes brutes ne reconnaissent pas les barres obliques inverses comme étant plus que des caractères ordinaires. J'aurais vraiment besoin de bons exemples.

0voto

deeproyalblue Points 41

\n est une séquence d'échappement en Python

\w est une séquence spéciale en Regex (Python)

Ils ont l'air d'appartenir à la même famille, mais ce n'est pas le cas. La notation brute des chaînes de caractères affecte les séquences d'échappement, mais pas les séquences spéciales de Regex.

Pour en savoir plus sur les séquences d'échappement rechercher " \newline " https://docs.python.org/3/reference/lexical_analysis.html

Pour en savoir plus sur les séquences spéciales : rechercher " \number " https://docs.python.org/3/library/re.html

0voto

Nick Ng Points 1

La chaîne brute n'affecte pas les séquences spéciales dans les expressions rationnelles de python telles que \w , \d. Elle n'affecte que les séquences d'échappement telles que \n. La plupart du temps, il n'est donc pas important d'écrire r devant ou non.

Je pense que c'est la réponse que la plupart des débutants recherchent.

Prograide.com

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.

Powered by:

X