2016-12-05 2 views
3

Also, als Teil meiner Anwendung, ich brauche es, um Daten aus einer Textdatei zu lesen, und Elemente zwischen geschweiften Klammern.PYTHON - Erfassen Sie Inhalte in geschweiften Klammern

z:

Server_1 {

/directory1/directory2

}

Server_2 {

/directory1

/directory2

}

Dann so etwas wie, wenn Server == Server_1, drucken Sie die Verzeichnisse.

Mit freundlichen Grüßen

Michael

Antwort

4

Sie können mit diesem versuchen:

\{(.*?)\} 

Explanation

  1. \{ matches the character { literally (case sensitive)
  2. (.*?) 1st Capturing Group
  3. .*? jedes Zeichen
  4. *? Quantifizierer - Spiele zwischen null und unbegrenzte Zeiten, so wenig wie möglich, je nach Bedarf (faul) Expandieren
  5. \} entspricht dem Zeichen } wahrsten Sinne des Wortes (Groß- und Kleinschreibung)

Beispielcode Inhalt in geschweifte Klammer zu extrahieren:

import re 

regex = r"\{(.*?)\}" 

test_str = ("Server_1 {\n" 
    "/directory1 /directory2\n\n" 
    "}\n" 
    "Server_2 {\n\n" 
    "/directory1\n\n" 
    "/directory2\n\n" 
    "}") 

matches = re.finditer(regex, test_str, re.MULTILINE | re.DOTALL) 

for matchNum, match in enumerate(matches): 
    for groupNum in range(0, len(match.groups())): 
     print (match.group(1)) 

Run the code here

Verwandte Themen