Ich fand das in 123
, \d
Streichhölzer 1
und 3
aber nicht 2
. Ich habe mich gefragt, ob \d
eine Ziffer mit einer bestimmten Anforderung übereinstimmt. Ich spreche von Regex im Python-Stil.
Das Plugin für reguläre Ausdrücke in Gedit verwendet Regex im Python-Stil. Ich habe eine Textdatei mit dem Inhalt erstellt
123
Nur 1
und 3
werden von der Regex abgeglichen \d
; 2
ist nicht.
Im Allgemeinen stimmen bei einer Folge von Ziffern ohne andere Zeichen dazwischen nur die Ziffern ungerader Reihenfolge überein und die Ziffern gerader Reihenfolge nicht. Zum Beispiel in 12345
, sind die Spiele 1
, 3
und 5
.
\d
wird übereinstimmen1
,2
und3
. Wenn nicht, muss etwas anderes in Ihrem Ausdruck sein. Können Sie Ihren vollen Ausdruck zeigen?\d
ist eine Abkürzung für[0-9]
, also sollte es passen2
. Bitte veröffentlichen Sie einen vollständigen Testfall (ein Skript, das ausgeführt werden kann und Ihr Problem demonstriert), und vielleicht können wir herausfinden, was falsch ist.11111
und22222
.Antworten:
[0-9]
ist nicht immer gleichbedeutend mit\d
. Stimmt in Python3[0-9]
nur mit0123456789
Zeichen überein , während\d
Übereinstimmungen[0-9]
und andere Ziffern, z. B. ostarabische Ziffern, übereinstimmen٠١٢٣٤٥٦٧٨٩
.quelle
import re, re.match(r'\d', '٠١٢٣٤٥٦٧٨٩')
zeigt keine ÜbereinstimmungPython
und\d
stimmt mit allen Unicode-Ziffern nur in Python3 überein. In Python 2.7 ist es immer noch das alte ASCII[0-9]
- es könnte sich lohnen, dies in der Antwort zu verdeutlichen. :)\d
Entspricht einer einzelnen Ziffer in den meisten Regex-Grammatikstilen, einschließlich Python. Regex-Referenzquelle
Entspricht im regulären Regex im Python-Stil
\d
jeder einzelnen Ziffer. Wenn Sie etwas sehen, das dies nicht zu tun scheint, geben Sie bitte den vollständigen regulären Ausdruck an, den Sie verwenden, anstatt nur dieses eine Symbol zu beschreiben.quelle
123
.\\d{3}
Entspricht einer beliebigen dreistelligen Folge in Java.quelle
\\d+
Dies ist nur eine Vermutung, aber ich denke, Ihr Editor stimmt tatsächlich mit jeder einzelnen Ziffer überein -
1
2
3
- aber es werden nur ungerade Übereinstimmungen hervorgehoben, um sie von dem Fall zu unterscheiden, in dem das Ganze vorliegt123
Zeichenfolge übereinstimmt.Die meisten Regex-Konsolen heben zusammenhängende Übereinstimmungen mit unterschiedlichen Farben hervor. Aufgrund der Plugin-Einstellungen, Terminal-Einschränkungen oder aus anderen Gründen wird in Ihrem Fall möglicherweise nur jede andere Gruppe hervorgehoben.
quelle
Infos zu .NET / C #:
Info: https://docs.microsoft.com/en-us/dotnet/standard/base-types/character-classes-in-regular-expressions#decimal-digit-character-d
quelle