Ich möchte in einem String:
Code: Alles auswählen
"Das ist ein String"
Code: Alles auswählen
"St|Str|Stri|fu|bar"
Code: Alles auswählen
import re
line = "Das ist ein String"
matches = re.findall("St|Str|Stri|fu|bar", line)
print matches
Code: Alles auswählen
matches = ['St']
Code: Alles auswählen
matches = ['Stri']
Ich schaue ob sich Elemente des Patterns im Pattern wiederholen und sortiere das Pattern entsprechend:
Aus:
Code: Alles auswählen
"St|Str|Stri|fu|bar"
Code: Alles auswählen
"Stri|Str|St|fu|bar"
Ich entferne Treffer aus dem Pattern und schaue ob es weitere Treffer gibt. Anschließend vergleiche ich die gefundenen Treffer und nehme mir den "längsten".
Ich finde beide Lösungen nicht besonders elegant. Leider hat re.findall() kein overlapping=True flag.
Hat jemand von euch eine gute/elegante Idee wie ich das Problem umschiffen kann?