当前位置:  开发笔记 > 编程语言 > 正文

Objective-C Cocoa应用程序中的正则表达式

如何解决《Objective-CCocoa应用程序中的正则表达式》经验,为你挑选了7个好方法。

Initial Googling表明在Objective-C Cocoa应用程序中没有内置的方法来执行正则表达式.

所以有四个问题:

    这是真的吗?

    你在跟我开玩笑吗?

    好的,那么你推荐一个不错的开源库吗?

    在没有导入库的情况下,有什么方法可以使用NSScanner类?

小智.. 141

我注意到,从iOS 4.0开始,Apple提供了一个NSRegularExpression类.此外,从10.7开始,该类在OS X下可用.



1> 小智..:

我注意到,从iOS 4.0开始,Apple提供了一个NSRegularExpression类.此外,从10.7开始,该类在OS X下可用.


现在也是Mac OS X 10.7

2> mfazekas..:

    是的,Cocoa中没有正则表达式支持.如果您只对布尔匹配感兴趣,可以使用支持ICU正则表达式语法的NSPredicate.但通常你会对子表达式的匹配或位置感兴趣,而你无法通过NSPredicate得到它.

    如前所述,您可以使用正则表达式POSIX函数.但是它们被认为是缓慢的,并且与其他解决方案(ICU/pcre)相比,正则表达式语法是有限的.

    有许多OSS库,CocoaDev有一个广泛的列表.

    例如,RegExKitLite不需要任何库,只需将.m和.h添加到项目中.

    (我对RegExKitLite的投诉是它通过类别扩展NSString,但它也可以被视为一个功能.它还使用操作系统附带的非公共ICU库,Apple不推荐这样做.)


iOS支持子串搜索的正则表达式,例如`[myString rangeOfString:@"regex_here"选项:NSRegularExpressionSearch]`
请记住,POSIX正则表达式函数不适用于unicode(仅限ASCII).

3> avocade..:

RegexKit是我发现的最好的.非常可可:y.我在几个iPhone应用程序中使用"Lite"版本:

SourceForge上

lingonikorg



4> Adam Wright..:

您可以使用POSIX Regular Expressions库(Yay用于兼容POSIX的操作系统).尝试

man 3 regex


并且因为POSIX正则表达式函数仅适用于ASCII字符串.

5> Mark Caufman..:

我用来解决REGEX和JSON解析问题的廉价和肮脏的黑客解决方案是创建一个UIWebView对象并注入Javascript函数来进行解析.然后javascript函数返回我关心的值(或值列表)的字符串.实际上,您可以存储为特定任务定制的小型库函数集,然后根据需要调用它们.

我不知道这种技术是否可以扩展到大量的重复解析请求,但是对于快速的事务处理,它可以完成工作,而不依赖于您可能不理解的任何额外的外部资源或代码.



6> Rob Keniger..:

我喜欢使用PCRE的AGRegex框架,如果你习惯了PCRE语法,我会很方便.该框架的最佳版本是Colloquy IRC客户端中的最佳版本,因为它已升级为使用PCRE 6.7:

http://colloquy.info/project/browser/trunk/Frameworks/AGRegex

它非常轻巧,远远超过RegExKit(尽管当然不具备能力).



7> bbaassssiiee..:

NSRegularExpression 从Mac OS X v10.7和IOS 4.0开始提供.

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有