N'utilisez pas \ d dans les expressions régulières Python 3!

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

Il 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

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

N'utilisez pas \ d dans les expressions régulières Python 3!
Comment utiliser les expressions régulières en Python
Utiliser des expressions régulières en C
Lors de l'utilisation d'expressions régulières en Python
[Python] Expressions régulières Expressions régulières
Chevauchement d'expressions régulières en Python et Java
Utilisez config.ini avec Python
Utiliser des dates en Python
Utiliser Valgrind avec Python
Utiliser le profileur en Python
Expression régulière en Python
Un chercheur d'une société pharmaceutique a résumé les expressions canoniques en Python
N'utilisez pas readlines () dans votre instruction Python for!
Expression de régression multiple en Python
Voyons comment utiliser def en python
Utiliser l'expression let en Python
Utiliser le protocole de mesure avec Python
Utiliser la fonction de rappel en Python
Utiliser le magasin de paramètres en Python
Utiliser le cache HTTP en Python
Utilisez l'ODM de MongoDB avec Python
Utiliser Random Forest avec Python
Ne faites pas test.py en Python!
Utilisez Spyder de Python IDE
Envelopper de longues expressions en python
À propos de Python et des expressions régulières
Utilisez le tissu tel quel en python (fabric3)
Comment utiliser SQLite en Python
Je ne me souviens pas des expressions régulières Python
Utiliser rospy avec virtualenv dans Python3
Comment utiliser Mysql avec python
Utiliser Python mis en pyenv avec NeoVim
Comment utiliser ChemSpider en Python
Comment utiliser PubChem avec Python
Utiliser OpenCV avec Python 3 dans Window
Gestion des expressions régulières par PHP / Python
Un mémo qui gère les guillemets doubles pleine largeur avec les expressions régulières Python
Expressions régulières faciles et solides à apprendre en Python
[Python, Julia] Affichage 3D dans la bibliothèque Jupyter-Mayavi
[Introduction à Python] Comment utiliser la classe en Python?
Utiliser l'impression dans l'expression lambda Python2
ABC 157 D - Résolvez les suggestions d'amis en Python!
Utilisez facilement vos propres fonctions en Python
Match de début / fin dans l'expression régulière python
Un moyen simple d'utiliser Wikipedia avec Python
Comment utiliser __slots__ dans la classe Python
Résoudre ABC165 A, B, D avec Python
Utilisez pathlib dans Maya (Python2.7) en préparation du prochain Python3.7
[Route vers Python intermédiaire] Utiliser des expressions lambda
Python: analyse morphologique simplifiée avec des expressions régulières
Comment utiliser is et == en Python
Caractéristiques des modules d'expressions régulières qui sont souvent utilisés personnellement en Python
Quadtree en Python --2
Python en optimisation
CURL en Python
Métaprogrammation avec Python
Python 3.3 avec Anaconda
Géocodage en python