Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
text1 = 'abc12345'
text2 = 'abc1234'
re.match('\D?\d{4}$',text1)
#es wird kein match-Objekt zurückgegeben
re.match('\D?\d{4}$',text2)
#es wird kein match-Objekt zurückgegeben
re.search('\D?\d{4}$',text1)
#gibt ein match-Objekt
re.search('\D?\d{4}$',text2)
#gibt ein match-Objekt
EDIT: habe gerade erst das letzte Posting von HWK gelesen... werde ich mal probieren.
problembär hat geschrieben:Könntest auch eine eigene kleine Funktion ohne RegExes schreiben, in der Du die letzten vier Stellen jeweils mit ".isdigit()" überprüfst.
@noisefloor: Einmal "slicen" reicht. Bei dem was vor den letzten vier Zeichen steht interessiert ja nur *ein* Zeichen -- dafür muss man nicht "slicen".
import re
def s(s):
return bool(re.search(r"(^|\D)\d{4}$", s))
assert s("1234")
assert not s("123")
assert not s("11234")
assert s("abc1234")
assert not s("abc123")
assert not s("abc11234")
HWK hat geschrieben:@sma: Entspricht das nicht dem, was ich bereits vorgeschlagen habe?
Weitestgehend. Ich habe keine Gruppen. Manchmal schreibe ich Postings offline und/oder lese nicht alle Beiträge sorgfältig genug, um zu bemerken, dass mittlerweile mein Posting obsolete geworden ist. Und manchmal denke ich mir auch einfach, wenn ich's schon geschrieben habe, kann ich's auch posten. Das ist dann nicht als Kritik der vorherigen Beiträge zu werden.
Doch: (^|\D).
Den Rest bei mir habe ich nur zugefügt, weil ich nicht wusste, ob der OP die letzten 4 Ziffern noch weiter verwenden will.
Ich habe Deinen Post auch nicht als Kritik aufgefasst, wollte Dich aber trotzdem auf das Überlesen meines Posts aufmerksam machen.
MfG
HWK