2016-12-05 125 views
3

因此,作爲我的應用程序的一部分,我需要它從文本文件中讀取數據,並在大括號之間獲取元素。PYTHON - 捕獲大括號內的內容

e.g:

的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