删除出现在文本之前的所有超链接(维基百科转储)

Strip all hyperlinks that appear before the text (Wikipedia dump)

我正在维基百科转储中查找与第一段中出现的第一句话相关的一些有用信息。转储是高度非结构化的,因为他们将几乎所有信息保存在一列中。他们使用符号组合来识别文本的显示方式,例如当某些单词写为“'word'”时,它会显示为粗体。同样的情况是超链接,他们使用 [[ ]] 作为超链接。现在,因为我想要第一段的第一句话(包括超链接),所以我需要删除所有不代表文本的额外信息。我这样做是使用

 preg_replace("#\{{.*?}\}#s","", $text)

示例文本(来自维基百科转储):

{{Ver desambig}}
{{Mais notas||ci|data=janeiro de 2013}}
{{Info/Taxonomia}}
[[Ficheiro:Pêra amarela.JPG|thumbnail|upright]] //image link which i don't want

A {{AO-pAO|pera|pêra}} é o fruto comestível da pereira, uma [[árvore]] do. //first sentence of first paragraph

我删除了所有 {{ }} 所以我只剩下:

[[Ficheiro:Pêra amarela.JPG|thumbnail|upright]]
A {{AO-pAO|pera|pêra}} é o fruto comestível da pereira, uma [[árvore]] do.

现在,如果您看到这里有两个超链接(超链接用 [[ ]] 表示)。我想保留出现在第一句中的那个,即 árvore 但我不希望在此之前有任何 [[ ]] 序列。我尝试从文本中删除 [[ ]],但也删除了我不想要的 árvore

P.S:第一句开始前可能有多个超链接。可以通过正则表达式来完成吗?我正在使用 php。谢谢

使用下面的正则表达式,然后用空字符串替换匹配的字符。

(?s)^(?:\s*{{.*?}}|\s*\[\[.*?]])*\n?

^ 在 DOTALL 模式下 (?s),匹配第一行的开头。

DEMO

您可能想使用 wiki 语法分析器并根据需要修改它。

http://www.mediawiki.org/wiki/Alternative_parsers