PYTHON - Capture contents inside curly braces

2019-01-19 20:42发布

So, as part of my application, i need it to read data from a text file, and get elements between curly brackets.

e.g:

Server_1 {

/directory1 /directory2

}

Server_2 {

/directory1

/directory2

}

Then something like, if Server == Server_1, print the directories.

Kind regards,

Michael

1条回答
冷血范
2楼-- · 2019-01-19 20:53

You can try with this:

\{(.*?)\}

Explanation

  1. \{ matches the character { literally (case sensitive)
  2. (.*?) 1st Capturing Group
  3. .*? matches any character
  4. *? Quantifier — Matches between zero and unlimited times, as few times as possible, expanding as needed (lazy)
  5. \} matches the character } literally (case sensitive)

Sample Code to extract content inside curly bracket:

 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

查看更多
登录 后发表回答