2017-08-07 1 views
-4

Was in der Regex für ein Muster in einem String ist:Python RegexMuster Übereinstimmung einer Zeichenfolge

description details #lo firstname lastname 29 March 2017 

Daher gibt vier Felder, die Bedürfnisse regex zu identifizieren: Beschreibung, Priorität, Namen und Datum.

I angepasst erfolgreich die erste Saite mit:

^([^#]*). 

Aber ich kann nicht herausfinden, wie die anderen Felder übereinstimmen.

Danke.

+2

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 –

+0

Danke für den Rat! –

+1

Versuchen Sie ['^ ([^ #] +) \ s # (\ w +) \ s + (. *?) \ S + (\ d {4} - \ d {2} - \ d {2}) $'] (https://regex101.com/r/MVtswP/1) –

Antwort

1

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'} 
Verwandte Themen