Python を使用して、特定の文字列に続く MediaWiki マークアップでフォーマットされたコンテンツを抽出したいと考えています。たとえば、2012 年の米国大統領選挙の記事には、「nominee1」と「nominee2」というフィールドが含まれています。おもちゃの例:
In [1]: markup = get_wikipedia_markup('United States presidential election, 2012')
In [2]: markup
Out[2]:
u"{{
| nominee1 = '''[[Barack Obama]]'''\n
| party1 = Democratic Party (United States)\n
| home_state1 = [[Illinois]]\n
| running_mate1 = '''[[Joe Biden]]'''\n
| nominee2 = [[Mitt Romney]]\n
| party2 = Republican Party (United States)\n
| home_state2 = [[Massachusetts]]\n
| running_mate2 = [[Paul Ryan]]\n
}}"
例として上記の選挙記事を使用して、「nomineeN」フィールドの直後にあるが、次のフィールドの呼び出しの前に存在する情報を抽出したいと思います (ピップ「|」で区切られます)。したがって、上記の例を考えると、「バラク・オバマ」と「ミット・ロムニー」、または少なくともそれらが埋め込まれている構文 ('''[[バラク・オバマ]]''' と [ [ミット・ロムニー]])。他の正規表現はwikimarkup からリンクを抽出しましたが、肯定的な後読みアサーションを使用する私の (失敗した) 試みは、次のようなものでした:
nominees = re.findall(r'(?<=\|nominee\d\=)\S+',markup)
私の考えでは、"|nominee1=" や "|nominee2=" のような文字列を見つけて、"|"、"nominee"、"=" の間に空白を入れることができ、"Barack Obama" や "ミット・ロムニー」。