2011-08-03 56 views
0

我用這個正則表達式來搜索我的網站上的一個字符串中的img src。 現在我不想用這個表達式在目標c中做同樣的事情。我該如何使用RegexKitLite來做到這一點? 這是我表達RegexKitLite如何轉換一個PHP正則表達式在目標c中

/<img.+src=[\'"]([^\'"]+)[\'"].*>/i 

@Tim Pietzcker

你的代碼的偉大工程,但是,例如,如果我嘗試搜索IMG在此字符串

<p><a href="http://www.nationalgeographic.it/popoli-culture/2011/08/03/news/per_la_tomba_del_boia-443612/?rssimage"> <img src="http://www.nationalgeographic.it/images/2011/07/29/115624013-20034abf-4d91-40fe-98ab-782f06a9854d.jpg" width="140" align="left" hspace="10"></a>Scoperta in America del Sud la sepoltura pre-incaica di un uomo circondato da coltelli cerimoniali che secondo gli archeologi eseguiva sacrifici umani</p> 

我有這樣的結果在我的數組:

matchArray: (
    "<img src=\"http://www.nationalgeographic.it/images/2011/07/29/115624013-20034abf-4d91-40fe-98ab-782f06a9854d.jpg\" width=\"140\" align=\"left\" hspace=\"10\">" 
) 

我該如何修改你的正則表達式來只獲取src的內容 標籤?非常感謝你

+0

我非常確定,蘋果不再接受使用RegexKitLite的應用程序,因爲它使用了私有庫(libicu),現在應該使用NSRegularExpression,它使用相同的libicu庫。 –

回答

1

/分隔符會把你扔掉。另外,你至少應該使用懶惰的量詞。試試這個:

NSString *regexString = @"(?i)<img.+?src=['\"]([^'\"]+)['\"].*?>"; 

順便說一句,當文件名包含引號時就會中斷。這可能是你的問題嗎?

這是一個比較安全(和處理報價以及)一個正則表達式將是

NSString *regexString = @"(?i)<img[^<>]+?src=(['\"])((?:(?!\\1).)+)\\1[^<>]*>"; 

不過,現在比賽的文件名會在捕獲組2,而不是1,那麼您需要修改任何代碼,比賽結束後使用文件名。

+0

謝謝!你的代碼有效,但我只想要src =標籤的內容!我在我的問題中添加了一些信息!看看 –

+0

你需要訪問第二個捕獲組。我想你使用'capture:2L'參數來獲得這個。檢查[RegexKitLite手冊](http://dfn.dl.sourceforge.net/project/regexkit/RegexKitLite/RegexKitLite-4.0/RegexKitLite-4.0.pdf)中的第14頁。 –

+0

非常感謝你!我會盡力 –