2017-02-07 2 views
1

Ich verstehe nicht, warum dies nicht ein Spiel für die sich wiederholenden Ziffern zurück:Python Regex Suche: wiederholte Ziffer n-mal

import re 
digits = '122223456789' 
re.search(r'(\d)\4', digits) 

Stattdessen erhalte ich „Fehler: ungültige Gruppe Referenz an Position 4“

+0

Meintest du '(\ d) \ 1 +'? –

+0

're.search (r '((\ d) \ 2+)', Ziffern) .group (1)' für eine unbekannte Anzahl von Wiederholungen. 'r '\ d {4}' wenn Sie gezielt nach 4 Wiederholungen suchen. – dawg

Antwort

2

Da \4 ist eine Gruppenreferenz in Python-Regex-Engine. Wenn Sie eine Wiederholung angeben möchten, sollten Sie {} verwenden.

re.search(r'(\d){4}', digits) 

Oder wenn Sie möchten, 4-stelliges Sie verweisen müssen mit \1 wiederholt übereinstimmen, da (\ d) die erste aufgenommene-Gruppe ist.

re.search(r'(\d)\1{3}', digits) 

Demo:

In [5]: re.search(r'(\d)\1{3}', digits).group(0) 
Out[5]: '2222' 

Sie können die Gruppennummer group() Attribut search() Funktion übergeben, um das Ergebnis der angepassten String von einer bestimmten Gruppe zu erhalten. Oder übergeben Sie einfach 0, um die gesamte Übereinstimmung zu erhalten.

+0

Danke. Ich dachte, die '\ number' in' (\ d) \ number' war eine Möglichkeit, die Anzahl der wiederholten Muster, die für die Gruppe spezifisch waren, zu vergleichen. Aber es ist wie eine Perl-Variable. –