重複の可能性:
ネストされた構造とPythonの正規表現の照合
Wikiページの単一のデータグループを照合しようとしています。私が使用しているPythonコードのビットを以下に示します。問題は、それが自身のグループの終わりを過ぎて}}
ページの最後に戻ることです。
def findPersonInfo(self):
if (self.isPerson == True):
regex = re.compile(r"{{persondata(.*)}}",re.IGNORECASE|re.UNICODE|re.DOTALL)
result = regex.search(self._rawPage)
if result:
print 'Match found: ', result.group()
Wikiページのコンテンツのサンプル:
*[http://www.jsc.nasa.gov/Bios/htmlbios/acaba-jm.html NASA biography]
{{NASA Astronaut Group 19}}
{{Persondata
|NAME= Acaba, Joseph Michael "Joe"
|ALTERNATIVE NAMES=
|SHORT DESCRIPTION=[[Hydrogeologist]]
|DATE OF BIRTH={{Birth date and age|1967|5|17}}
|PLACE OF BIRTH=[[Inglewood, California]]
|DATE OF DEATH=
|PLACE OF DEATH=
}}
{{DEFAULTSORT:Acaba, Joseph M.}}
[[Category:1967 births]]
私の現在の正規表現は次の文字列を返しています:
{{Persondata
|NAME= Acaba, Joseph Michael "Joe"
|ALTERNATIVE NAMES=
|SHORT DESCRIPTION=[[Hydrogeologist]]
|DATE OF BIRTH={{Birth date and age|1967|5|17}}
|PLACE OF BIRTH=[[Inglewood, California]]
|DATE OF DEATH=
|PLACE OF DEATH=
}}
{{DEFAULTSORT:Acaba, Joseph M.}}
私はそれを返したいです:
{{Persondata
|NAME= Acaba, Joseph Michael "Joe"
|ALTERNATIVE NAMES=
|SHORT DESCRIPTION=[[Hydrogeologist]]
|DATE OF BIRTH={{Birth date and age|1967|5|17}}
|PLACE OF BIRTH=[[Inglewood, California]]
|DATE OF DEATH=
|PLACE OF DEATH=
}}
トリッキーな点は、他の開閉をカウントして、どのグループに立ち寄りたいかを知る必要{{
が}}
あることですが、正規表現でそれを行う方法がわかりません。