Я работаю над дампом википедии, чтобы найти полезную информацию, связанную с первым предложением, которое появилось в первом абзаце. Дамп очень неструктурирован, поскольку почти все данные хранятся в одном столбце. Они используют комбинацию символов, чтобы распознать, как будет отображаться текст, например, когда какое-либо слово написано как «слово», оно будет выделено жирным шрифтом. Та же самая ситуация с гиперссылками, они используют [[]] для гиперссылок. Теперь, когда я хочу первое предложение (включая гиперссылки) первого абзаца, мне нужно убрать всю дополнительную информацию, которая не представляет текст. Я сделал это с помощью
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 тоже чего я не хочу.
П.С .: Может быть более одной гиперссылки до начала первого предложения. Можно ли это сделать с помощью регулярных выражений? Я использую php. Спасибо
Используйте приведенное ниже регулярное выражение, а затем замените соответствующие символы пустой строкой.
(?s)^(?:\s*{{.*?}}|\s*\[\[.*?]])*\n?
^
в режиме ДОТАЛ (?s)
, соответствует началу самой первой строки.
Возможно, вы захотите использовать синтаксический анализатор вики и изменить его для своих нужд.