ich eine Liste von Strings haberegex Extrakt verschiedene Teile einer Zeichenfolge in konsistenter Reihenfolge
my_strings = [
"2002-03-04 with Matt",
"Important: 2016-01-23 with Mary",
"with Tom on 2015-06-30",
]
Ich mag extrahieren:
- Datum (immer in yyyy-mm-dd-Format)
- Person (immer mit Person), aber ich will nicht halten „mit“
ich tun konnte:
import re
pattern = r'.*(\d{4}-\d{2}-\d{2}).*with \b([^\b]+)\b.*'
matched = [re.match(pattern, x).groups() for x in my_strings]
aber es schlägt fehl, weil das Muster nicht "with Tom on 2015-06-30"
entspricht.
Frage s
Wie gebe ich die RegexMuster die Reihenfolge gleichgültig zu sein, in dem Datum oder der Person in der Zeichenfolge erscheinen?
und
Wie stelle ich sicher, dass die groups()
Methode, um sie in der gleichen Reihenfolge kehrt jedes Mal?
Ich erwarte, dass die Ausgabe so aussieht?
[('2002-03-04', 'Matt'), ('2016-01-23', 'Mary'), ('2015-06-30', 'Tom')]
Benannte Gruppen ist groß. Danke, ich habe etwas sehr nützliches gelernt. – piRSquared
Das einzige Problem mit dieser _Out-of_order_ -Methode ist, dass sie beide oder das eine oder andere mit einem fehlenden Teil übereinstimmen. Dies könnte unter Verwendung von Bedingungen mit dem Modul _regex_ geschehen, das nicht funktioniert, aber beide Teile benötigt. Es ist wirklich nicht gut auf diese Weise, es sei denn, es ist die Implikation von garantierten Teilen, oder es ist einfach nicht so wichtig. – sln