したがって、アプリケーションの一部として、テキストファイルからデータを読み取り、中括弧で囲まれた要素を取得する必要があります。
例えば:
Server_1 {
/ directory1/directory2
}
Server_2 {
/ directory1
/ directory2
}
次に、Server == Server_1
の場合、ディレクトリを出力します。
敬具、
マイケル
あなたはこれで試すことができます:
_\{(.*?)\}
_
\{ matches the character { literally (case sensitive)
(.*?) 1st Capturing Group
_.*?
_は任意の文字に一致します*?
_ Quantifier —ゼロから無制限の時間に一致し、可能な限り少ない回数で、必要に応じて拡張します(遅延)\}
_は文字_}
_と文字通り一致します(大文字と小文字が区別されます)中括弧内のコンテンツを抽出するためのサンプルコード:
_ 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))
_
サーバー名も抽出する場合は、次の方法で試すことができます。
fullConfig = """
Server_1 {
/directory1 /directory2
}
Server_2 {
/directory1
/directory2
}
"""
# OUTPUT
# ('Server_1', '/directory1 /directory2\n')
# ('Server_2', '/directory1\n /directory2\n')
regex = r'(\w+)\s*[^{]*{\s*([^}]+)\s*}'
for serverName, serverConfig in re.findall(regex, fullConfig):
print(serverName, serverConfig)