Initial Googling表明在Objective-C Cocoa应用程序中没有内置的方法来执行正则表达式.
所以有四个问题:
这是真的吗?
你在跟我开玩笑吗?
好的,那么你推荐一个不错的开源库吗?
在没有导入库的情况下,有什么方法可以使用NSScanner类?
小智.. 141
我注意到,从iOS 4.0开始,Apple提供了一个NSRegularExpression类.此外,从10.7开始,该类在OS X下可用.
我注意到,从iOS 4.0开始,Apple提供了一个NSRegularExpression类.此外,从10.7开始,该类在OS X下可用.
是的,Cocoa中没有正则表达式支持.如果您只对布尔匹配感兴趣,可以使用支持ICU正则表达式语法的NSPredicate.但通常你会对子表达式的匹配或位置感兴趣,而你无法通过NSPredicate得到它.
如前所述,您可以使用正则表达式POSIX函数.但是它们被认为是缓慢的,并且与其他解决方案(ICU/pcre)相比,正则表达式语法是有限的.
有许多OSS库,CocoaDev有一个广泛的列表.
例如,RegExKitLite不需要任何库,只需将.m和.h添加到项目中.
(我对RegExKitLite的投诉是它通过类别扩展NSString,但它也可以被视为一个功能.它还使用操作系统附带的非公共ICU库,Apple不推荐这样做.)
RegexKit是我发现的最好的.非常可可:y.我在几个iPhone应用程序中使用"Lite"版本:
SourceForge上
lingonikorg
您可以使用POSIX Regular Expressions库(Yay用于兼容POSIX的操作系统).尝试
man 3 regex
我用来解决REGEX和JSON解析问题的廉价和肮脏的黑客解决方案是创建一个UIWebView对象并注入Javascript函数来进行解析.然后javascript函数返回我关心的值(或值列表)的字符串.实际上,您可以存储为特定任务定制的小型库函数集,然后根据需要调用它们.
我不知道这种技术是否可以扩展到大量的重复解析请求,但是对于快速的事务处理,它可以完成工作,而不依赖于您可能不理解的任何额外的外部资源或代码.
我喜欢使用PCRE的AGRegex框架,如果你习惯了PCRE语法,我会很方便.该框架的最佳版本是Colloquy IRC客户端中的最佳版本,因为它已升级为使用PCRE 6.7:
http://colloquy.info/project/browser/trunk/Frameworks/AGRegex
它非常轻巧,远远超过RegExKit(尽管当然不具备能力).
NSRegularExpression
从Mac OS X v10.7和IOS 4.0开始提供.