Regex Lookaheads

时间:2010-04-30 05:22:32

标签: javascript regex

需要捕获根<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 个答案:

答案 0 :(得分:2)

Regexp不是处理使用无上下文语法解析的编程语言的好工具。尝试使用XML DOM来完成这项工作。

答案 1 :(得分:1)

我不懂JavaScript,所以我无法帮助你使用DOM。我同意100%尝试用正则表达式解析XML是个坏主意。但是,可能存在一种快速,非常肮脏且非常脆弱的解决方法:

如果缩进在整个文件中保持一致,并且<channel>元素始终处于相同的缩进级别,则可以将该事实用作正则表达式的指南。在您的示例中/^ {2}<pubDate>([^<]*)<\/pubdate>/m(=行首开头后的两个空格)可能正常工作。

使用此风险需要您自担风险。这里有龙等。

答案 2 :(得分:1)

查看jQuery,看看这是否有助于阅读/解析XML:http://think2loud.com/reading-xml-with-jquery/

KM