2011-09-29 77 views
2

我想使用regexkitlite進行字符串匹配在objective-c中,我遇到了一些問題。我正在試圖做的是尋找一個大的字符串匹配子:Objective-C RegexKitLite匹配一個字符串或另一個

  • 的 「http:// [某件事] .JPG」
  • 的 「http:// [某件事] png格式」

基本上,我想從原始字符串中找到圖像的所有鏈接。我目前擁有的是:

NSString *regexString = @"http://[a-zA-Z0-9._%+-/]+\.jpg"; 

現在這適用於.jpg圖像,但當然它不匹配.png圖像。我真的很想使用一個匹配的regexString,但我不知道如何。

閱讀一些正則表達式教程其他語言,我認爲它是沿着線的東西:

NSString *regexString = @"http://[a-zA-Z0-9._%+-/]+\.(?:jpg|png)"; 

但我不能完全得到它的權利。

任何幫助將不勝感激。

+1

re基本上是正確的,有什麼值得懷疑的是,如果'RegexKitLite'支持不匹配的圓括號(?:我個人已經轉移到Apple提供的:'NSRegularExpression',iOS 4.0+。 – zaph

+0

正則表達式是正確的。讓你認爲它不是?你的結果是什麼? –

回答

0

您不需要圍繞文件擴展名的非捕獲組。使用它們是一個很好的習慣,但這可能會導致錯誤。 (圖書館是否支持它?)

此外,我通過使用預定義的字符類來簡化您的正則表達式。

NSString *regexString = @"http://[\w.%+-/]+\.(jpg|png)"; 

你可以在行動here看到這個。

您還可以添加所需的任何文件擴展名。例如:(jpg|png|gif|...)

更新:蘋果現在包括正則表達式支持與NSRegularExpression,它在OS X v10.7和更高版本中可用。

相關問題