Il semble que cela ne soit pas connu de manière inattendue, mais dans l'expression régulière du module standard Python 3 re, \ d
correspond également aux nombres dits de pleine largeur.
Je vais vraiment l'essayer.
python
>>> import re
>>> re.findall(r"\d", "012012")
['0', '1', '2', '0', '1', '2']
>>>
«\ d» correspond également à «0», «1» et «2».
La raison pour laquelle ce comportement n'est pas bien connu est
\ d
correspond à des nombres dits pleine largeurIl peut y avoir d'autres raisons également.
La documentation du re module indique également qu'il est recommandé d'utiliser «[0-9]» au lieu de «\ d» pour faire correspondre «\ d» uniquement à «[0-9]». , mais pour des raisons telles que vouloir utiliser les longues expressions régulières pour d'autres langues telles quelles, \ Si vous voulez garder d
, vous pouvez soit ajouter flags = re.ASCII
à l'argument ou ajouter (? A)
au début de l'expression régulière.
python
>>> import re
>>> re.findall(r"\d", "012012", flags=re.ASCII)
['0', '1', '2']
>>> re.findall(r"(?a)\d", "012012")
['0', '1', '2']
>>>
Cependant, ces indicateurs affectent l'ensemble de l'expression régulière. Pour plus d'informations, veuillez lire la documentation relative au module.
Notez que flags =
est omis.
Vous pouvez l'écrire comme re.findall (r" \ d "," 012012 ", re.ASCII)
, mais si vous l'omettez mal, vous risquez de devenir accro, il est donc fortement recommandé de ne pas l'omettre.
Au fait, moi-même
(? A)
etc. au début.Pour des raisons telles que
python
import regex
RE_DIGITS = regex.compile(r"""(?xa)
\A\d+\Z""")
def is_digits(digits):
if RE_DIGITS.match(digits) is not None:
return True
else:
return False
J'aime écrire comme ça, mais je suis toujours inquiet d'utiliser \ d
, donc j'essaye d'écrire [0-9 ]
autant que possible. (ʻIs_digits () ʻest juste un exemple, donc juste au cas où)
Recommended Posts