text
変数によって説明した3つの日があります。複数のフィルタとREGEXを使用する方法
text = """
DAY {
foo 12 5 A
foo
12345
}
DAY {
day 1
day 2
file = "/Users/Shared/docs/doc.txt"
day 3
end of the month
}
DAY {
01.03.2016 11:15
01.03.2016 11:16
01.03.2016 11:17
}"""
全3日間の定義は(行の先頭にある)ワードDAYで始まり、その後、スペースや中括弧は、 。終わりは、常に行の先頭に配置された閉じ括弧で示されます。 したがって、各DAYの境界は中括弧{}内に定義されています。
使用regex
私は境界線の内側にfile = "/Users/Shared/docs/doc.txt"
行を含むDAYを「見つける」必要があります。
string = """DAY {\n [A-Za-z0-9]+}"""
result = re.findall(string, text)
しかし、式は、右の空白文字の前にfoo
の最後にテキストの検索を停止します。それは、その本体でfile = "/Users/Shared/docs/doc.txt"
を有する第2 DAYを返すので、結果は次のようになりますように、式を変更する方法:複数行のテキストに一致する正規表現を実行するには
DAY {
day 1
day 2
file = "/Users/Shared/docs/doc.txt"
day 3
end of the month
}