Привет, ребята, учитывая набор данных в виде простого текста, например:
==Events==
* [[312]] – [[Constantine the Great]] is said to have received his famous [[Battle of Milvian Bridge#Vision of Constantine|Vision of the Cross]].
* [[710]] – [[Saracen]] invasion of [[Sardinia]].
* [[939]] – [[Edmund I of England|Edmund I]] succeeds [[Athelstan of England|Athelstan]] as [[King of England]].
*[[1275]] – Traditional founding of the city of [[Amsterdam]].
*[[1524]] – [[Italian Wars]]: The French troops lay siege to [[Pavia]].
*[[1553]] – Condemned as a [[Heresy|heretic]], [[Michael Servetus]] is [[burned at the stake]] just outside [[Geneva]].
*[[1644]] – [[Second Battle of Newbury]] in the [[English Civil War]].
*[[1682]] – [[Philadelphia]], [[Pennsylvania]] is founded.
Я хотел бы получить NSDictionary
или другую форму сбора, чтобы можно было сопоставить год (число слева) с выдержкой (текст справа). Вот как выглядит шаблон:
*[[YEAR]] – THE_TEXT
Хотя я хотел бы, чтобы выдержка была в виде простого текста, то есть без вики-разметки, поэтому не нужно ставить [[
. На самом деле, это может оказаться трудным с псевдонимами, такими как [[Edmund I of England|Edmund I]]
.
Я не настолько опытен с регулярными выражениями, поэтому у меня есть несколько вопросов. Должен ли я сначала попытаться «украсить» данные? Например, удалить первую строку, которая всегда будет ==Events==
, и удалить вхождения [[
и ]]
?
Или, может быть, лучшее решение: я должен сделать это в проходах? Так, например, при первом проходе я могу разделить каждую строку на * [[710]]
и [[Saracen]] invasion of [[Sardinia]]
. и хранить их в разные NSArrays
.
Затем пройдите первые NSArray
лет и получите текст только в пределах [[]]
( Я говорю текст, а не число, потому что это может быть 530 до н. Э. ), поэтому * [[710]]
становится 710
.
А затем для выдержки NSArray
, пройдите и, если найден [[some_article|alias]]
, сделайте как-нибудь только [[alias]]
, а затем удалите все наборы [[
и ]]
?
Возможно ли это? Должен ли я использовать регулярные выражения? Есть ли какие-нибудь идеи, которые вы можете придумать для регулярных выражений, которые могут помочь?
Спасибо! Я действительно ценю это.
РЕДАКТИРОВАТЬ : Извините за путаницу, но я хочу только проанализировать вышеупомянутые данные. Предположим, что это единственный тип разметки, с которым я столкнусь. Я не обязательно с нетерпением ожидаю парсинга разметки вики в целом, если только не существует уже существующей библиотеки, которая делает это. Еще раз спасибо!