2016-12-05 3 views
3

Итак, в качестве части моего приложения мне нужно прочитать данные из текстового файла и получить элементы между фигурными скобками.PYTHON - Захват содержимого внутри фигурных скобок

например:

SERVER_1 {

/directory1/directory2

}

Server_2 {

/directory1

/directory2

}

Потом что-то подобное, если Server == Server_1, печать каталогов.

С наилучшими пожеланиями,

Майкл

ответ

4

Вы можете попробовать это:

\{(.*?)\} 

Explanation

  1. \{ matches the character { literally (case sensitive)
  2. (.*?) 1st Capturing Group
  3. .*? соответствует любому символу
  4. *? Квантор - Матчи между нулем и неограниченное количество раз, как несколько раз, как это возможно, расширяющиеся по мере необходимости (ленивый)
  5. \} соответствует символу } буквально (чувствительно к регистру)

Пример кода для извлечения содержимого внутри фигурной скобкой:

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

Смежные вопросы