2012-09-18 48 views
2

下面是我拼湊了一個正則表達式:PCRE/PHP正則表達式不匹配最後一個「項目」

/(.*={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

我嘗試,我想我已經得到了解決(我可以生成與它正確的輸出文件),只需要修改你的正則表達式是這樣的:

/(.*={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語句的最後和一些()

+0

謝謝。那就是訣竅。非常感激。 – superbarney