Das habe ich in gefunden 123, d Streichhölzer 1 und 3 aber nicht 2. Ich habe mich gefragt, ob d Entspricht einer Ziffer, die welche Art von Anforderung erfüllt? 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 sind für eine Folge von Ziffernnummern ohne andere Zeichen dazwischen nur die Ziffern ungerader Ordnung Übereinstimmungen und die Ziffern gerader Ordnung nicht. Zum Beispiel im 12345die Streichhölzer sind 1, 3 und 5.
d wird passen 1, 2 und 3. Wenn nicht, muss etwas anderes in Ihrem Ausdruck sein. Kannst du deinen vollen Ausdruck zeigen?
– Alex Aza
25. Juni 11 um 17:37 Uhr
d ist eine Abkürzung für [0-9]also sollte es passen 2. Bitte posten Sie einen vollständigen Testfall (ein Skript, das ausgeführt werden kann und das Ihr Problem demonstriert) und vielleicht können wir herausfinden, was falsch ist.
– zol
25. Juni 11 um 17:37 Uhr
@delnan: “Ich habe festgestellt, dass in 123 d mit 1 und 3 übereinstimmt, aber nicht mit 2” klingt für mich ziemlich konkret.
– Bernstein
25. Juni 11 um 17:41 Uhr
@Amber: Verdammt, mir ist das nicht entgangen!
– Benutzer395760
25. Juni 11 um 17:42 Uhr
Okay, ich poste das nicht als Antwort, weil ich es nicht tue wissen, aber ich denke, was los ist, ist, dass gedit sich weigert, unmittelbar nach dem Ende des vorherigen Spiels ein neues Match zu starten – es überspringt ein Zeichen, was auch immer es ist, bevor es erneut versucht, zu matchen. Bitte versuchen Sie es mit dem Abgleich 11111 und 22222.
– zol
25. Juni 11 um 18:34 Uhr
Kirill Polishchuk
[0-9]ist nicht immer gleichwertig zu d. In python3, [0-9] nur Übereinstimmungen 0123456789 Zeichen, während d Streichhölzer [0-9] und andere Ziffernzeichen, zum Beispiel ostarabische Ziffern ٠١٢٣٤٥٦٧٨٩.
Versuchen Sie dies in der REPL: import re, re.match(r'd', '٠١٢٣٤٥٦٧٨٩') zeigt keine Übereinstimmung
– Nickf
18. Juli 12 um 10:48 Uhr
Verwenden Sie für Persisch und Arabisch in Java- und Javascript-Engines p{Nd}
– Alireza Fattahi
16. November 13 um 13:57 Uhr
Das ist nicht richtig. Nicht alle Motoren setzen es so um. Onigurum und Onigmo (zB in Ruby verwendet) haben d == [0-9]wenn Sie die Ziffern anderer Skripte wollen, müssen Sie p{digit} verwenden
– Apeiros
12. April 14 um 16:53 Uhr
+1, aber mmmm … das Tag des OP ist Python und d stimmt nur in Python3 mit Unicode-Ziffern überein. In Python 2.7 ist es immer noch das alte ASCII [0-9]– Es könnte sich lohnen, dies in der Antwort zu klären. 🙂
– zx81
16. Juni 14 um 11:02 Uhr
@FarazAhmad, wahrscheinlich nicht, Sie müssen alle Zeichen separat angeben
– Kirill Polishchuk
28. Dezember 17 um 23:26 Uhr
Wille
d stimmt mit jeder einzelnen Ziffer in den meisten Regex-Grammatikstilen überein, einschließlich Python. Regex-Referenz
In Regex im Python-Stil, d passt zu jeder einzelnen Ziffer. Wenn Sie etwas sehen, das dies nicht zu tun scheint, geben Sie bitte das an voll Regex, den Sie verwenden, anstatt nur dieses eine bestimmte Symbol zu beschreiben.
>>> 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>
Danke! Mein Regex-Parser ist ein Plugin für reguläre Ausdrücke in gedit. Der gesamte Inhalt ist 123.
– Tim
25. Juni 11 um 17:45 Uhr
srajan
\d{3} stimmt mit einer beliebigen Folge von drei Ziffern in Java überein.
Dies ist nur eine Vermutung, aber ich denke, Ihr Editor stimmt tatsächlich mit jeder einzelnen Ziffer überein – 123 – Es werden jedoch nur ungerade Übereinstimmungen hervorgehoben, um sie von dem Fall zu unterscheiden, in dem das Ganze angezeigt wird 123 Zeichenfolge passt.
Die meisten Regex-Konsolen heben zusammenhängende Übereinstimmungen mit unterschiedlichen Farben hervor, aber aufgrund der Plugin-Einstellungen, Terminalbeschränkungen oder aus anderen Gründen wird in Ihrem Fall möglicherweise nur jede andere Gruppe hervorgehoben.
juFo
Infos zu .NET / C#:
Dezimalziffernzeichen: d d entspricht jeder Dezimalziffer. Es entspricht dem regulären p{Nd}-Ausdrucksmuster, das die Standard-Dezimalziffern 0-9 sowie die Dezimalziffern einer Reihe anderer Zeichensätze enthält.
Wenn ECMAScript-konformes Verhalten angegeben ist, ist d äquivalent zu [0-9]. Informationen zu regulären ECMAScript-Ausdrücken finden Sie im Abschnitt „ECMAScript-Übereinstimmungsverhalten“ unter Optionen für reguläre Ausdrücke.
d
wird passen1
,2
und3
. Wenn nicht, muss etwas anderes in Ihrem Ausdruck sein. Kannst du deinen vollen Ausdruck zeigen?– Alex Aza
25. Juni 11 um 17:37 Uhr
d
ist eine Abkürzung für[0-9]
also sollte es passen2
. Bitte posten Sie einen vollständigen Testfall (ein Skript, das ausgeführt werden kann und das Ihr Problem demonstriert) und vielleicht können wir herausfinden, was falsch ist.– zol
25. Juni 11 um 17:37 Uhr
@delnan: “Ich habe festgestellt, dass in 123 d mit 1 und 3 übereinstimmt, aber nicht mit 2” klingt für mich ziemlich konkret.
– Bernstein
25. Juni 11 um 17:41 Uhr
@Amber: Verdammt, mir ist das nicht entgangen!
– Benutzer395760
25. Juni 11 um 17:42 Uhr
Okay, ich poste das nicht als Antwort, weil ich es nicht tue wissen, aber ich denke, was los ist, ist, dass gedit sich weigert, unmittelbar nach dem Ende des vorherigen Spiels ein neues Match zu starten – es überspringt ein Zeichen, was auch immer es ist, bevor es erneut versucht, zu matchen. Bitte versuchen Sie es mit dem Abgleich
11111
und22222
.– zol
25. Juni 11 um 18:34 Uhr