正则表达式从维基媒体格式的标记文档中提取数据

时间:2013-10-17 10:11:49

标签: regex clojure wikipedia

我正在尝试从clojure中的维基百科/维基媒体标记结构中提取一些数据。

{{Infobox company
...
...
|operating_income = {{Increase}} US$ 26.76 billion (2013)<ref name=10K/>
|net_income       = {{Increase}} US$ 21.86 billion (2013)<ref name=10K/>
|assets           = {{Increase}} US$ 142.43 billion (2013)<ref name=10K/>
|equity           = {{Increase}} US$ 78.94 billion (2013)<ref name=10K/>
...
}}

我需要{{infobox company .... }}区域内的信息。

所以我使用了这个正则表达式(re-seq #"\{\{(.*?)}\}" above-txt)

但这给了我一些正则表达但仍然不是全部。此页面上有大量额外数据以及嵌套{{}}

您可以在http://en.wikipedia.org/w/api.php?format=xml&action=query&titles=microsoft&prop=revisions&rvprop=content

看到全文

我认为我的正则表达式的问题在于它没有处理嵌套的{{..}}标签。

1 个答案:

答案 0 :(得分:0)

如果正则表达式令人沮丧,您可以考虑使用Instaparse创建一个可以处理任意嵌套表达式的小解析器。虽然它可以用于更多的输入类型,但我的重量有点重。