2011-09-29 39 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和更高版本中可用。

相关问题