Verwenden Sie \ d nicht in regulären Python 3-Ausdrücken!

Es scheint, dass es nicht unerwartet bekannt ist, aber im regulären Ausdruck des Python 3-Standard-Re-Moduls stimmt \ d auch mit sogenannten Zahlen voller Breite überein.

Ich werde es tatsächlich versuchen.

python


>>> import re
>>> re.findall(r"\d", "012012")
['0', '1', '2', '0', '1', '2']
>>> 

\ d entspricht auch '0',' 1' und '2'.

Der Grund, warum dieses Verhalten nicht bekannt ist, ist

Es kann auch andere Gründe geben.

In der Dokumentation zum Modul heißt es außerdem, dass empfohlen wird, "[0-9]" anstelle von "\ d" zu verwenden, um "\ d" nur mit "[0-9]" abzugleichen. ](Http://docs.python.jp/3.3/library/re.html#regular-expression-syntax), aber aus Gründen wie dem Wunsch, die langen regulären Ausdrücke für andere Sprachen so wie sie sind zu verwenden, \ Wenn Sie d behalten möchten, können Sie entweder flags = re.ASCII zum Argument hinzufügen oder (? A) zum Anfang des regulären Ausdrucks hinzufügen.

python


>>> import re
>>> re.findall(r"\d", "012012", flags=re.ASCII)
['0', '1', '2']
>>> re.findall(r"(?a)\d", "012012")
['0', '1', '2']
>>> 

Diese Flags wirken sich jedoch auf den gesamten regulären Ausdruck aus. Weitere Informationen finden Sie in der Dokumentation zum Modul.

Beachten Sie, dass flags = weggelassen wird. Sie können es als "re.findall (r" \ d "," 012012 ", re.ASCII)" schreiben, aber wenn Sie es schlecht weglassen, können Sie süchtig werden, daher wird dringend empfohlen, es nicht wegzulassen.

Übrigens ich selbst

Aus Gründen wie

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

Ich schreibe gerne so, aber ich mache mir immer noch Sorgen um die Verwendung von "\ d", also versuche ich, so viel wie möglich "[0-9]" zu schreiben. (Is_digits () ist nur ein Beispiel, nur für den Fall)

Recommended Posts

Verwenden Sie \ d nicht in regulären Python 3-Ausdrücken!
Verwendung regulärer Ausdrücke in Python
Verwenden Sie reguläre Ausdrücke in C.
Bei Verwendung regulärer Ausdrücke in Python
[Python] Reguläre Ausdrücke Reguläre Ausdrücke
Überlappende reguläre Ausdrücke in Python und Java
Verwenden Sie config.ini mit Python
Verwenden Sie Datumsangaben in Python
Verwenden Sie Valgrind mit Python
Verwenden Sie den Profiler in Python
Regulärer Ausdruck in Python
Ein Forscher eines Pharmaunternehmens fasste die kanonischen Ausdrücke in Python zusammen
Verwenden Sie in Ihrem Python keine readlines () für Anweisungen!
Mehrfacher Regressionsausdruck in Python
Mal sehen, wie def in Python verwendet wird
Verwenden Sie den let-Ausdruck in Python
Verwenden Sie das Messprotokoll mit Python
Verwenden Sie die Rückruffunktion in Python
Verwenden Sie den Parameterspeicher in Python
Verwenden Sie den HTTP-Cache in Python
Verwenden Sie Random Forest mit Python
Mach nicht test.py in Python!
Verwenden Sie Spyder von Python IDE
Wickeln Sie lange Ausdrücke in Python ein
Über Python und reguläre Ausdrücke
Verwenden Sie Stoff wie in Python (Stoff3)
Verwendung von SQLite in Python
Ich kann mich nicht an reguläre Python-Ausdrücke erinnern
Verwenden Sie rospy mit virtualenv in Python3
Wie man MySQL mit Python benutzt
Verwenden Sie Python in pyenv mit NeoVim
Verwendung von ChemSpider in Python
Verwendung von PubChem mit Python
Verwenden Sie OpenCV mit Python 3 in Window
Umgang mit regulären Ausdrücken durch PHP / Python
Ein Memo, das doppelte Anführungszeichen in voller Breite mit regulären Python-Ausdrücken verarbeitet
Reguläre Ausdrücke, die in Python leicht und solide zu erlernen sind
[Python, Julia] 3D-Anzeige in der Jupyter-Mayavi-Bibliothek
[Einführung in Python] Wie verwende ich eine Klasse in Python?
Verwenden Sie print in Python2 lambda expression
ABC 157 D - Lösungsvorschläge für Freunde in Python!
Verwenden Sie einfach Ihre eigenen Funktionen in Python
Start / End-Match im regulären Python-Ausdruck
Einfache Möglichkeit, Wikipedia mit Python zu verwenden
Verwendung von __slots__ in der Python-Klasse
Löse ABC165 A, B, D mit Python
Verwenden Sie pathlib in Maya (Python2.7), um sich auf das kommende Python3.7 vorzubereiten
[Road to Intermediate Python] Verwenden Sie Lambda-Ausdrücke
Python: Vereinfachte morphologische Analyse mit regulären Ausdrücken
Verwendung ist und == in Python
Funktionen von Modulen für reguläre Ausdrücke, die in Python häufig persönlich verwendet werden
Quadtree in Python --2
Python in der Optimierung
CURL in Python
Metaprogrammierung mit Python
Python 3.3 mit Anaconda
Geokodierung in Python