我正在尝试从维基百科文章中提取语言列表:List_of_programming_languages_by_type。有几行:
- [[Ada(编程语言)|Ada]](多用途语言)
- [[Afnix (programming language)|Afnix]] – 自动保护并发访问数据(以前称为“Aleph”,但与“Alef”无关)
- [[Cilk]] – 并发 [[C (programming language)|C]]
几乎所有行都被正确解析,除了带有多个 [[ ]] 块的行(示例中带有 Click 语言的行)。解析代码:
for line in lines:
lang = re.search('^\*+\s*(\[\['
'((?P<wiki_link>.+?)(\|))?'
'(?P<lang_name>.+?)'
'\]\])', line)
if lang:
print lang.groupdict()
并输出:
{'wiki_link': u'Ada (programming language)', 'lang_name': u'Ada'}
{'wiki_link': u'Afnix (programming language)', 'lang_name': u'Afnix'}
{'wiki_link': u'Cilk]] – a concurrent [[C (programming language)', 'lang_name': u'C'}
如何在一行中管理多个 [[ ]] 块?
PS预期结果:
{'wiki_link': None, 'lang_name': u'Clik'}