从visual studio到Xcode,从MFC走向Cocoa应用程序(4)–正则类RegexKitLite的使用

什么是正则(Regex)?

正则是一种用于搜索字符的表示标准。Regex就是Regular Expression的缩写,即正则表达式,在计算机科学中,用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。举个例子:

有字符串:NSString *str = @”son father grandfather”;

我们现在想从中找到和father有关的词,正则表达式可以写成:/(grand)?father/  这一表达式就可以匹配father和grandfather。

再有一例,我们想匹配gray或者grey这两个相同意义,但欧美不同拼写的词,可以使用/gray|grey/或者/gr(a|e)y/这两个正则表达式。

在现在的应用当中,我们有时候需要匹配更多的复杂的语句,比如说整数,我们就可以写成:/[+\-]?[0-9]+/;比如说浮点数:/[+\-]?(?:[0-9]*\.[0-9]+|[0-9]+\.)/;比如说包含科学计数法的数:/([+\-]?(?:[0-9]*\.[0-9]+|[0-9]+\.)(?:[eE][+\-]?[0-9]+)?)/;比如说url:/\b(https?)://(?:(\S+?)(?::(\S+?))?@)?([a-zA-Z0-9\-.]+)(?::(\d+))?((?:/[a-zA-Z0-9\-._?,’+\&%$=~*!():@\\]*)+)?/ ……

什么是RegexKitLite?

这是一个在Xcode编写cocoa应用程序当中为NSString类提供了小量化的正则方法的工具。它的好处就是只需要在编辑的工程中导入RegexKitLite.h和RegexKitLite.m两个文件,然后设置动态链接至/usr/lib/libicucore.dylib即可使用。小量化,但只对NSString起作用。

使用RegexKitLite:

首先下载原文件。

将RegexKitLite.h及RegexKitLite.m两个文件导入到工程当中去:Add->Existing Files…

注意要勾选“Copy items into Destination’s Group Folder(if needed)”

将RegexKitLite.h及RegexKitLite.m两个文件导入到工程当中去
将RegexKitLite.h及RegexKitLite.m两个文件导入到工程当中去

因为RegexKitLite使用ICU库,所以需要动态链接到/usr/lib/libicucore.dylib库当中去,否则你会得到13个错误。具体Dynamically linked to /usr/lib/libicucore.dylib方法如下

1.进入菜单Project->Edit Project Settings

2.在搜索框内输入linker搜索,找到”Other Linker Flags”选项。

3. 加入一个新的标签,名为-licucore。

现在,我们已经实现了RegexKitLite的导入。我们可以试一下它是否工作,在你要编写的m文件当中include “RegexKitLite.h”文件,而后按照http://regexkit.sourceforge.net/RegexKitLite/给的例字试验几例,比如搜索并替换例:

发表评论

电子邮件地址不会被公开。 必填项已用*标注