Vielen Dank im Voraus für das Lesen.Gibt alle überlappenden Muster mit re.findall() in Python zurück?
Ich habe eine Zeichenfolge:
A = "a levels"
Ich möchte alle folgenden möglichen Variationen der A-Ebene entsprechen:
Pattern = r"a level|a levels"
(Die Form dieser Muster festgelegt ist, kann ich es nicht ändern wie folgt
["a level","a levels"]
I findall benutzen.) der Suche nach wünsche ich zu bekommen :
B = re.findall(Pattern,A)
und erhält:
B = "a level"
re.findall paßt nur das erste Glied und ignoriert den zweiten überlappende Begriff.
Per: Python regex find all overlapping matches? Ich habe versucht, mit:
B = re.findall(Pattern,A,overlapped = True)
und erhalten den folgenden Fehler:
TypeError: findall() got an unexpected keyword argument 'overlapped'
Offensichtlich overlapped
nicht als Schlüsselwort-Argument gibt es nicht mehr ...
Ich schaute dann auf diese Frage: Python regex find all overlapping matches? und versuchte:
C = re.finditer(Pattern,A)
results = match.group()
results = "a level"
Also nicht besser.
Wie bekomme ich den gewünschten Ausgang?
Relevante qu: How to find overlapping matches with a regexp?
Sie können überlappende Strings nur bei verschiedenen Indizes abgleichen. –
Ich bin mir nicht sicher, ob es möglich ist zu erreichen, was Sie wollen, aber der überlappende Fehler kann über 'pip install regex 'und dann' import regex als re 'behoben werden. Regex ist neuere Version des Regex-Moduls für Python. –
@saurabhbaid. Leider wird die "überlappende" Option in "Regex" das Problem hier nicht lösen, da es nicht mit Alternation funktioniert. – ekhumoro