iPhone正则表达式教程: RegexKitLite 框架

Tags: ios regex regexkitlite

正则表达式介绍

正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。

许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

给定一个正则表达式和另一个字符串,我们可以达到如下的目的:

  1. 给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”);

  2. 可以通过正则表达式,从字符串中获取我们想要的特定部分。

正则表达式的特点是:

  1. 灵活性、逻辑性和功能性非常的强;

  2. 可以迅速地用极简单的方式达到字符串的复杂控制。

  3. 对于刚接触的人来说,比较晦涩难懂。

由于正则表达式主要应用对象是文本,因此它在各种文本编辑器场合都有应用,小到著名编辑器EditPlus,大到Microsoft Word、Visual Studio等大型编辑器,都可以使用正则表达式来处理文本内容。

RegexKitLite Framework介绍

RegexKitLite框架在NSString类上提供了一些额外的方法,这些方法可以用于正则表达式。我们可以用这些方法通过正则表达式来匹配字符,当然,在这个场景中使用字符串的substring来进行搜索更有效率。

添加RegexKitLite到项目中:

  1. 这里下载RegexKitLite的源代码

  2. 在源代码目录中找到“RegexKitLite.h”和“RegexKitLite.m” 将他们添加到项目中。

    Add -> Existing Files…

    注意 : 确保“Copy items into Destination’s Group Folder(if needed)”选项被选中。

1.png

RegexKitLite使用Mac OSX附带的ICU共享库/usr/lib/libicucore.dylib来提供正则表达式功能,因此,我们的程序可能因为核心库文件而报错。为了避免这种情况,请按照下列步骤操作:

  1. 打开菜单 Project -> Edit Project Settings

    2.png

  2. 在搜索框中输入linker然后选择“Other Linker Flags”选项

    3.png

  3. 添加一个新的link标识:-licucore

4.png

   5.png

这样我们就把RegexKitLite配置到我们的项目中了。

使用RegexKitLite Framework

在NSString类的方法中增加了正则表达式的相关方法,我们可以执行一些使用正则表达式来例子。现在,既然您的应用程序项目(WindowBasedApplication)已经设置好了,只需导入“RegexKitLite.h”,将下面代码添加到您的applicationDidFinishLaunching方法。

– (void)applicationDidFinishLaunching:(UIApplication *)application {
//Extraction of valid mail ids
NSString * searchString = @" para.g@gmail.com sourabh_84368@gmail.com abc@def.in abcd@yahoomail.com mobisoft@mail.in andy@rediffmail.com";
NSString *regexString = @"[a-z0-9_.%]+@[a-z0-9_.%]+\\.[a-z][a-z][a-z]";
NSArray *matchArray = nil;
matchArray = [searchString componentsMatchedByRegex:regexString];
NSLog(@"matchArray: %@", matchArray);
// Override point for customization after application launch
[window makeKeyAndVisible];
}

运行应用程序,你将会在console中看到如下输出:

6.png

   

因此,我们得到了一个数组,数组中包含源字符串中所有以“G"结尾的字符串。同样的,我们可以创建更多的正则表达式来提取所需的数据。你可以在这里下载源代码。

本文链接:http://www.4byte.cn/learning/90267/iphone-zheng-ze-biao-da-shi-jiao-cheng-regexkitlite-kuang-jia.html