我试图从维基百科文章中提取语言列表:按类型列出编程语言列表。只有几行:
- [[Ada (programming language)|Ada]] (multi-purpose language)
- [[Afnix (programming language)|Afnix]] – concurrent access to data is protected automatically (previously called ''Aleph'', but unrelated to ''Alef'')
- [[Cilk]] – a concurrent [[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()
和输出:
^{pr2}$如何在一行中使用多个[[]]块?在
p.S.预期结果:
{'wiki_link': None, 'lang_name': u'Clik'}
你就快到了:
只需将
(?P<wiki_link>.+?)
更改为(?P<wiki_link>[^]]+?)
。在它将与嵌套结构不匹配。在
^{pr2}$相关问题 更多 >
编程相关推荐