Sie müssen den regulären Ausdruck irgendwie verankern. Ein regulärer Ausdruck sucht in Strings nach einem Muster. Also wird "dd" in "dddddddd" mit dem Offset 0,1,2,3,4,5,6 gefunden.
Wenn Sie nur ganze Strings abgleichen möchten, versuchen Sie ^dd$
.^entspricht dem Anfang einer Zeichenkette, $ entspricht dem Ende. So wird ^(dd|dddd)$
das gewünschte Verhalten haben.
Wenn Sie wollen, dass nur dd oder dddd innerhalb einer Zeichenkette übereinstimmt. Dann könnten Sie verwenden möchten: [^d](dd|dddd)[^d]
Welche „alles, was nicht d“ wird passen dann entweder zwei oder vier ds dann „alles, was nicht ist d“
Zusätzlich zu den bereits gegebenen Antworten sollten Sie 're.match' anstelle von' re.search' verwenden, um zu vermeiden, dass Treffer über den Anfang der Zeichenfolge hinaus gefunden werden. (Sie müssen das Ende noch verankern, um Ihr gewünschtes Verhalten zu erhalten, also achten Sie immer noch auf diese anderen Antworten) –