当前位置:新注册送38元体验金 > 新注册送38元体验金操作系统 > 详解iPhone应用中正则表达式OgreKit使用方法

详解iPhone应用中正则表达式OgreKit使用方法

文章作者:新注册送38元体验金操作系统 上传时间:2019-08-22

iPhone应用正则表达式OgreKit使用方法是本文要介绍的内容,主要是来了解OgreKit使用方法,正则表达式是我非常常用的编程工具, 以前不管是在Ruby还是C#中使用率都非常高. 现在开始学习Cocoa之后就一直想知道如何使用正则表达式, 在Cocoa自带的库里面找了很久居然发现没有相应的支持库(BS一下, 这种常用的东西居然没有, 也不知道苹果是怎么想的….).

上网找了不少各式各样的库, 用下来要么体积太大, 要么结构设计的不舒服, 最后把目标锁定在了 OgreKit 上。

是的, 这是一个日本程序员写的东西(无差别仇日的人可以走开了), 最让我头疼的一点就是没有英文文档…. 就连代码里面的注释都是日文的, 还好方法命名非常合理, 靠猜基本都能猜对.

下面介绍一下主要的类:

OGRegularExpression (正则表达式功能实现)   OGRegularExpressionEnumerator (匹配结果集的枚举器)   OGRegularExpressionMatch (匹配结果)   OGReplaceExpression (替换功能实现)   OGRegularExpressionFormatter (正则表达式格式化)  

先介绍一下 OGRegularExpression.

通过查看它的源文件可以看到参数最多的一个静态构造函数的签名如下

  (id)regularExpressionWithString:(NSString*)expressionString           options:(unsigned)options           syntax:(OgreSyntax)syntax           escapeCharacter:(NSString*)character;  

参数 options 可以接受以下值的组合:

OgreNoneOption 没有选项   OgreSingleLineOption 只匹配单行   OgreMultilineOption ‘.’ 将匹配折行   OgreIgnoreCaseOption 忽略大小写   OgreExtendOption 使用扩展匹配模式   OgreFindLongestOption 使用最大匹配模式   OgreFindNotEmptyOption 忽略空匹配   OgreNegateSingleLineOption   OgreDontCaptureGroupOption 只匹配有名称的组   OgreCaptureGroupOption 匹配有名称或者无名称的组   OgreDelimitByWhitespaceOption  

参数 syntax 可以接受以下值的组合:

OgrePOSIXBasicSyntax POSIX Basic RE   OgrePOSIXExtendedSyntax POSIX Extended RE   OgreEmacsSyntax Emacs   OgreGrepSyntax grep   OgreGNURegexSyntax GNU regex   OgreJavaSyntax Java (Sun java.util.regex)   OgrePerlSyntax Perl   OgreRubySyntax Ruby (default)   OgreSimpleMatchingSyntax Simple Matching    escapeCharacter:   OgreBackslashCharacter @”\” Backslash (default)   OgreGUIYenCharacter [NSString stringWithUTF8String:"xc2xa5"] Yen Mark  

可以看出, 这个库基本上已经封装了所有正则表达式的功能, 而且还兼容多种语法, 很强!

由于很多第三方的库都没有什么文档(Mac下面很少有文档齐全的第三方库), 所以自己查看源文件来了解用法基本上已经是必要的技能了.

下面就来看看如何使用这套库.

1、最简单的使用范例.

// 构造正则表达式   OGRegularExpression *regex = [OGRegularExpression regularExpressionWithString:@"a[^a]*a"];   // 构造匹配结果枚举器   NSEnumerator *enumerator = [regex matchEnumeratorInString:@"alphabetagammadelta"];   OGRegularExpressionMatch *match;        // 定义匹配结果   while ((match = [enumerator nextObject]) != nil) {        // 顺序获得匹配结果字符串       NSLog(@"%@", [match matchedString]);   }   // 匹配结果:   //    alpha   //    aga   //    adelta  

2、替换功能使用范例.

- (void)replaceTest   {       OGRegularExpression        *celciusRegex;       celciusRegex = [OGRegularExpression regularExpressionWithString:@"([ -]?\\d (?:\\.\\d )?)C\\b"];       NSString    *targetString = @"36.5C, 3.8C, -195.8C";       NSLog(@"%@", [celciusRegex replaceAllMatchesInString:targetString           delegate:self           replaceSelector:@selector(fahrenheitFromCelsius:contextInfo:)           contextInfo:nil]);       // 处理结果: 97.7F, 38.8F, -320.4F   }    // 摄氏度转换到华氏温度.   - (NSString*)fahrenheitFromCelsius:(OGRegularExpressionMatch*)aMatch contextInfo:(id)contextInfo   {       double        celcius = [[aMatch substringAtIndex:1] doubleValue];       double        fahrenheit = celcius * 9.0 / 5.0   32.0;       return [NSString stringWithFormat:@"%.1fF", fahrenheit];    // 返回替换结果.   }  

3、带名称匹配组使用范例.

OGRegularExpression *regex = [OGRegularExpression regularExpressionWithString:@"<img src="(?<imageURL>. )". >"           options:OgreCaptureGroupOption           syntax:OgreRubySyntax           escapeCharacter:OgreBackslashCharacter];    NSArray *matches = [regex allMatchesInString:@"<img src="http://www.kylipe.com/uploads/allimg/190822/10291123P-0.jpg">"];    if (matches != nil && ([matches count] == 1))   {           OGRegularExpressionMatch *match = [matches objectAtIndex: 0];           NSString *result = [match substringNamed:@"ImageURL"];           // 结果: ttp://test.com/hello.jpg   } 

小结:详解iPhone应用正则表达式OgreKit使用方法的内容介绍完了,希望通过本文的学习能对你有所帮助!

中 正则表达式OgreKit 使用方法是本文要介绍的内容,主要是来了解 OgreKit 使用方法, 正则表达式 是我非常常用的编程工具, 以前...

本文由新注册送38元体验金发布于新注册送38元体验金操作系统,转载请注明出处:详解iPhone应用中正则表达式OgreKit使用方法

关键词: