web-dev-qa-db-fra.com

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

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

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

123

Seuls 1 et 3 correspondent à l'expression régulière \d; 2 n'est pas.

Généralement, pour une séquence de chiffres sans autres caractères, seuls les chiffres impairs sont des correspondances et les chiffres pairs ne le sont pas. Par exemple, dans 12345, les correspondances sont 1, 3 et 5.

137
Tim

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

436
Kirill Polishchuk

\d correspond à n'importe quel chiffre de la plupart des styles de grammaire regex, y compris python. Référence Regex

9
Will

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

7
srajan

Dans les expressions rationnelles de style Python, \d correspond à un chiffre individuel. Si vous voyez quelque chose qui ne semble pas faire cela, veuillez fournir la regex complète que vous utilisez, au lieu de simplement décrire ce symbole en 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>
7
Amber

Ceci est juste une hypothèse, mais je pense que votre éditeur correspond en réalité à chaque chiffre - 123 - mais seules les correspondances impaires sont mises en surbrillance, afin de le distinguer du cas où l'ensemble 123 chaîne est mise en correspondance.

La plupart des consoles regex mettent en évidence les correspondances contiguës avec des couleurs différentes, mais en raison des paramètres du plug-in, des limites du terminal ou d'une autre raison, seul votre groupe peut être mis en surbrillance dans votre cas.

4
Doghouse87