我正在开发维基百科转储,以找到与第一段中出现的第一句相关的一些有用信息。转储是高度非结构化的,因为它们已将几乎所有信息保存在一列中。他们使用符号组合来识别文本将如何显示,就像某些单词被写为'''单词'''时它会显示为粗体。相同的情况是超链接,他们使用[[]]进行超链接。现在,因为我想要第一段的第一句话(包括超链接)我需要删除所有不代表文本的额外信息。我是这样做的
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。感谢
答案 0 :(得分:1)
答案 1 :(得分:1)
您可能希望使用wiki语法解析器并根据需要进行修改。