Es scheint, Sie
^(?P<description>[^#]+?)\s+#(?P<priority>\w+)\s+(?P<name>.*?)\s+(?P<date>\d.*)$
Siehe regex demo
Einzelheiten
^
verwenden -
- Beginn der Zeichenfolge (mit
re.match
/re.fullmatch
implizite falls verwendet)- Gruppe "description": ein oder mehr Zeichen anders als #
möglichst wenig
\s+
- 1+ Leerzeichen
#
- a #
char
(?P<priority>\w+)
- Group "Priorität" matching 1+ Wort Zeichen
\s+
- 1+ Whitespaces
(?P<name>.*?)
- alle 0+ Zeichen außer Zeilenumbruch Zeichen, so wenig wie möglich
\s+
- 1+ Whitespaces
(?P<date>\d.*)
- Gruppe "Datum": eine Ziffer und der Rest der Linie
$
- Ende der Zeichenkette (implizit in re.fullmatch
)
HINWEIS: re.fullmatch
ist in Python 3.x verfügbar
Python demo:
import re
rx = r"(?P<description>[^#]+?)\s+#(?P<priority>\w+)\s+(?P<name>.*?)\s+(?P<date>\d.*)$"
ss = ["description details #lo firstname lastname 2017-03-29", "description details #lo firstname lastname 2017 June 29"]
for s in ss:
m = re.match(rx, s)
if m:
print(m.groupdict())
Ausgang:
{'priority': 'lo', 'date': '2017-03-29', 'description': 'description details', 'name': 'firstname lastname'}
{'priority': 'lo', 'date': '2017 June 29', 'description': 'description details', 'name': 'firstname lastname'}
Können Sie zeigen, was Sie versucht haben. Benutzer würden eher Ihnen helfen, wenn Sie zeigen, dass Sie sich bemüht haben, Ihr eigenes Problem zu lösen –
Danke für den Rat! –
Versuchen Sie ['^ ([^ #] +) \ s # (\ w +) \ s + (. *?) \ S + (\ d {4} - \ d {2} - \ d {2}) $'] (https://regex101.com/r/MVtswP/1) –