Wie überprüfe ich, ob eine Zeichenfolge mit diesem Muster übereinstimmt?
Großbuchstaben, Nummer (n), Großbuchstabe, Nummer (n) ...
Beispiel: Diese würden übereinstimmen:
A1B2
B10L1
C1N200J1
Diese würden nicht ('^' deutet auf ein Problem hin)
a1B2
^
A10B
^
AB400
^
python
regex
string-matching
DanielTA
quelle
quelle
^([A-Z]\d+){1,}$
so was?B
und nicht mit seinA
.A
undB
sind kleine Buchstaben richtig?A10b
undaB400
?Antworten:
Bearbeiten: Wie in den Kommentaren angegeben
match
, wird nur nach Übereinstimmungen am Anfang der Zeichenfolge gesucht, währendre.search()
ein Muster an einer beliebigen Stelle in der Zeichenfolge übereinstimmt. (Siehe auch: https://docs.python.org/library/re.html#search-vs-match )quelle
re.match
:If zero or more characters at the beginning of string match the regular expression pattern
. Ich habe gerade 30 Minuten lang versucht zu verstehen, warum ich am Ende einer Zeichenfolge nichts finden konnte. Scheint, als wäre das nicht möglichmatch
, oder? Dafürre.search(pattern, my_string)
funktioniert es aber.^
am Anfang, wenn du verwendestmatch
. Ich denke, es ist etwas komplizierter als diese sehr einfache Erklärung, aber ich bin nicht klar. Sie haben Recht, dass es am Anfang der Zeichenfolge beginnt.Einzeiler:
re.match(r"pattern", string) # No need to compile
Sie können es
bool
nach Bedarf bewertenquelle
import re
als erste Zeilere.match
im Kontext von verwendenif
, aber Sie müssen verwenden,bool
wenn Sie es anderswo verwenden?re.match
. Es stimmt nur am Anfang einer Zeichenfolge überein. Schauen Sie sichre.search
stattdessen an.if
prüft, ob das Match nicht stimmtNone
.Bitte versuche folgendes:
quelle
quelle
reguläre Ausdrücke machen dies einfach ...
[A-Z]
entspricht genau einem Zeichen zwischen A und Z.\d+
stimmt mit einer oder mehreren Ziffern überein()
Gruppieren Sie Dinge (und geben Sie auch Dinge zurück ... aber denken Sie vorerst nur an Gruppieren)+
wählt 1 oder mehr ausquelle
Ich glaube, das sollte für ein Großbuchstaben- Zahlenmuster funktionieren .
quelle