我正在嘗試解析一些維基百科文章的信息框,但似乎無(wú)法弄清楚。我已經(jīng)為 Albert Einstein 下載了文件,我嘗試解析 Infobox如下所示:我正在嘗試將信息框中的每個(gè)項(xiàng)目放入結(jié)構(gòu)或地圖中:m["name"] = "Albert Einstein"m["image"] = "Einstein...."......m["death_date"] = "{{Death date and age|df=yes|1955|4|18|1879|3|14}}"......我什至無(wú)法隔離信息框。我得到:[[{{Infobox scientist | name = Albert Einstein | image = Einstein 1921 by F Schmutzer - restoration.jpg | caption = Albert Einstein in 1921 | birth_date = {{Birth date|df=yes|1879|3|14}}]]API 中的 Albert Einstein 條目可以在以下位置找到:https://en.wikipedia.org/w/api.php?action=query&titles=Albert%20Einstein&prop=revisions&rvprop=content&format=json編輯:基于對(duì)這個(gè)問(wèn)題的公認(rèn)答案,我嘗試了以下正則表達(dá)式:(?=\{Infobox)(\{([^{}]|(?1))*\})但得到:panic: regexp: Compile(`(?=\{Infobox)(\{([^{}]|(?1))*\})`): error parsing regexp: invalid or unsupported Perl syntax: `(?=`編輯 #2:如果有辦法通過(guò)他們的 API 提取信息,那么我會(huì)接受....我一直在閱讀文檔但找不到它。
1 回答

江戶川亂折騰
TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超5個(gè)贊
我做了一個(gè)可能對(duì)你有用的正則表達(dá)式:
^\s*\|\s*([^\s]+)\s*=\s*(\{\{Plainlist\|(?:\n\s*\*.*)*|.*)
解釋
這部分:
^\s*\|\s*([^\s]+)\s*=\s*
匹配行的開(kāi)頭,例如:| <the_label> =
繼續(xù)在同一行,這部分:
(\{\{Plainlist\|(?:\n\s*\*.*)*|.*)
將匹配列表:{{Plainlist| * [[Ernst G. Straus]] * [[Nathan Rosen]] * [[Leó Szilárd]]
(請(qǐng)注意,它可能會(huì)省略最后的}}
。哦,好吧。)
如果沒(méi)有列表,則匹配到行尾。
- 1 回答
- 0 關(guān)注
- 146 瀏覽
添加回答
舉報(bào)
0/150
提交
取消