Regex Lookaheads - PullRequest
       5

Regex Lookaheads

2 голосов
/ 30 апреля 2010

Необходимо захватить содержимое корневого элемента <pubDate>, но в документе это может быть либо внутри элемента <item>, либо внутри элемента <channel>. Также <item> является потомком <channel> Я приведу пример

<channel>
  ...
  <pubDate>10/2/2010</pubDate>
  ...
  <item>
    ...
    <pubDate>13/2/2029</pubDate>
    ...
  </item>
  ...
</channel>

нужно захватить 10/2/2010

С <item> нет проблем, можете захватить его вместе с <pubDate>.

Ответы [ 3 ]

2 голосов
/ 30 апреля 2010

Regexp не является хорошим инструментом для работы с языком программирования, который анализируется с помощью контекстно-свободных грамматик. Попробуйте использовать XML DOM для выполнения этой работы.

1 голос
/ 30 апреля 2010

Проверьте jQuery и посмотрите, помогает ли это чтение / анализ XML: http://think2loud.com/reading-xml-with-jquery/

KM

1 голос
/ 30 апреля 2010

Я не знаю JavaScript, поэтому не могу помочь вам с DOM.Я согласен на 100%, что это плохая идея, чтобы попытаться проанализировать XML с помощью регулярных выражений.Может быть быстрый, очень грязный и очень хрупкий обходной путь, однако:

Если отступы одинаковы по всему файлу, а элементы <channel> всегда имеют одинаковый уровень отступа, вы можете использовать этот факт какруководство для регулярных выражений.В вашем примере /^ {2}<pubDate>([^<]*)<\/pubdate>/m (= два пробела после начала строки) может просто сработать.

Используйте это на свой страх и риск.Здесь будут драконы и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...