178 votes

Est-ce que " \d "dans regex signifie un chiffre ?

J'ai trouvé que dans 123 , \d correspond à 1 y 3 mais pas 2 . Je me demandais si \d correspond à un chiffre répondant à quel type d'exigence ? Je parle de regex de style Python.

Le plugin d'expression régulière dans Gedit utilise une expression régulière de style Python. J'ai créé un fichier texte dont le contenu est

123

Seulement 1 y 3 sont trouvés par la regex \d ; 2 ne l'est pas.

En général, pour une séquence de chiffres sans autres caractères entre eux, seuls les chiffres d'ordre impair sont des correspondances, et les chiffres d'ordre pair ne le sont pas. Par exemple, dans 12345 les correspondances sont 1 , 3 y 5 .

5 votes

\d correspondra à 1 , 2 y 3 . Si ce n'est pas le cas, il doit y avoir quelque chose d'autre dans votre expression. Pouvez-vous montrer votre expression complète ?

5 votes

\d est un raccourci pour [0-9] donc cela devrait correspondre 2 . Veuillez poster un cas de test complet (un script qui peut être exécuté, qui démontre votre problème) et peut-être que nous pourrons comprendre ce qui ne va pas.

0 votes

@delnan : "J'ai trouvé ça dans la 123, \d correspond à 1 et 3 mais pas à 2" me semble assez concret.

512voto

Kirill Polishchuk Points 28058

[0-9] n'est pas toujours équivalente a \d . En python3, [0-9] ne correspond qu'à 0123456789 tandis que \d correspond à [0-9] et d'autres caractères numériques, par exemple les chiffres arabes orientaux ٠١٢٣٤٥٦٧٨٩ .

4 votes

J'essaie ceci dans le REPL : import re, re.match(r'\d', '') ne montre aucune correspondance

2 votes

Pour le persan et l'arabe, dans les moteurs java et javascript, utilisez \p {Nd}

0 votes

Ce n'est pas correct. Tous les moteurs ne l'implémentent pas de cette façon. Onigurum et Onigmo (utilisé par exemple en Ruby) ont \d == [0-9], si vous voulez d'autres chiffres de scripts, vous devez utiliser \p {chiffre}

17voto

Will Points 958

\d correspond à tout chiffre unique dans la plupart des styles de grammaire regex, y compris python. Référence Regex

15voto

Amber Points 159296

Dans les regex de style Python, \d correspond à n'importe quel chiffre individuel. Si vous voyez quelque chose qui ne semble pas faire cela, veuillez fournir les informations suivantes complet que vous utilisez, par opposition à la description d'un symbole particulier.

>>> import re
>>> re.match(r'\d', '3')
<_sre.SRE_Match object at 0x02155B80>
>>> re.match(r'\d', '2')
<_sre.SRE_Match object at 0x02155BB8>
>>> re.match(r'\d', '1')
<_sre.SRE_Match object at 0x02155B80>

0 votes

Merci ! Mon analyseur d'expressions régulières est un plugin d'expression régulière dans gedit. Le contenu entier est 123 .

9voto

srajan Points 36

\\d{3} correspond à toute séquence de trois chiffres en Java.

0 votes

@amal-murali , Comment utiliser cette expression afin de faire correspondre n'importe quelle séquence de chiffres en Java.

4 votes

@HasanKhatib : \\d+

8voto

Doghouse87 Points 97

Ce n'est qu'une supposition, mais je pense que votre éditeur fait correspondre chaque chiffre - 1 2 3 - mais seules les correspondances impaires sont mises en évidence, afin de le distinguer du cas où l'ensemble de l'échantillon 123 est trouvée.

La plupart des consoles regex mettent en évidence les correspondances contiguës avec des couleurs différentes, mais en raison des paramètres du plugin, des limitations du terminal ou pour toute autre raison, seul un groupe sur deux peut être mis en évidence dans votre cas.

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