PCRE / PHP正则表达式与上一个“项目”不匹配

时间:2012-09-18 09:09:38

标签: php regex pcre

这是我拼凑的正则表达式:

/(.*={76}\s)?\s*(.*?)\s\-\-\s(\d{2}\/\d{2}\-\d{2}\s\d{2}:\d{2})\s\s(.*?)\s(http:\/\/service.*?)\s(\-{76})/is

这是我要解析的文字:http://p.linode.com/7015

这里是匹配文本的替代品:

<item>\n\t<title>$2</title>\n\t<pubDate>$pubDate</pubDate>\n\t<description>$4</description>\n\t<link>$5</link>\n</item>\n\n

最后,这是我得到的输出:http://p.linode.com/7016

几乎提出了将一段文本解析为RSS 2.0 XML标记所需的正则表达式。我已经使用RegExr和RegexBuddy对其进行了测试,除了之外,它在中完美地用于最后一个“项目”,其中链接后没有换行符(Line 269)。

简而言之,问题是文本中的“iProperty”文章不匹配

任何正在帮我解决错误的正则表达式大师?

1 个答案:

答案 0 :(得分:1)

我试过,我想我已经有了解决方案(我可以用它生成正确的输出文件),只需像这样修改你的正则表达式:

/(.*={76}\s)?\s*(.*?)\s\-\-\s(\d{2}\/\d{2}\-\d{2}\s\d{2}:\d{2})\s\s(.*?)\s(http:\/\/service.*?)(\s(\-{76})|$)/is

我刚刚在末尾添加了|$,为OR语句添加了一些()