自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

詳解iPhone應用中正則表達式OgreKit使用方法

移動開發(fā) iOS
本文主要是來了解正則表達式OgreKit使用方法,正則表達式是我非常常用的編程工具, 以前不管是在Ruby還是C#中使用率都非常高. 現(xiàn)在開始學習Cocoa之后就一直想知道如何使用正則表達式。

iPhone應用正則表達式OgreKit使用方法是本文要介紹的內(nèi)容,主要是來了解OgreKit使用方法,正則表達式是我非常常用的編程工具, 以前不管是在Ruby還是C#中使用率都非常高. 現(xiàn)在開始學習Cocoa之后就一直想知道如何使用正則表達式, 在Cocoa自帶的庫里面找了很久居然發(fā)現(xiàn)沒有相應的支持庫(BS一下, 這種常用的東西居然沒有, 也不知道蘋果是怎么想的….).

上網(wǎng)找了不少各式各樣的庫, 用下來要么體積太大, 要么結(jié)構(gòu)設計的不舒服, 最后把目標鎖定在了 OgreKit 上。

是的, 這是一個日本程序員寫的東西(無差別仇日的人可以走開了), 最讓我頭疼的一點就是沒有英文文檔…. 就連代碼里面的注釋都是日文的, 還好方法命名非常合理, 靠猜基本都能猜對.

下面介紹一下主要的類:

  1. OGRegularExpression (正則表達式功能實現(xiàn))   
  2. OGRegularExpressionEnumerator (匹配結(jié)果集的枚舉器)   
  3. OGRegularExpressionMatch (匹配結(jié)果)   
  4. OGReplaceExpression (替換功能實現(xiàn))   
  5. OGRegularExpressionFormatter (正則表達式格式化)  

先介紹一下 OGRegularExpression.

通過查看它的源文件可以看到參數(shù)最多的一個靜態(tài)構(gòu)造函數(shù)的簽名如下

  1. + (id)regularExpressionWithString:(NSString*)expressionString   
  2.         options:(unsigned)options   
  3.         syntax:(OgreSyntax)syntax   
  4.         escapeCharacter:(NSString*)character;  

參數(shù) options 可以接受以下值的組合:

  1. OgreNoneOption 沒有選項   
  2. OgreSingleLineOption 只匹配單行   
  3. OgreMultilineOption ‘.’ 將匹配折行   
  4. OgreIgnoreCaseOption 忽略大小寫   
  5. OgreExtendOption 使用擴展匹配模式   
  6. OgreFindLongestOption 使用最大匹配模式   
  7. OgreFindNotEmptyOption 忽略空匹配   
  8. OgreNegateSingleLineOption   
  9. OgreDontCaptureGroupOption 只匹配有名稱的組   
  10. OgreCaptureGroupOption 匹配有名稱或者無名稱的組   
  11. OgreDelimitByWhitespaceOption  

參數(shù) syntax 可以接受以下值的組合:

  1. OgrePOSIXBasicSyntax POSIX Basic RE   
  2. OgrePOSIXExtendedSyntax POSIX Extended RE   
  3. OgreEmacsSyntax Emacs   
  4. OgreGrepSyntax grep   
  5. OgreGNURegexSyntax GNU regex   
  6. OgreJavaSyntax Java (Sun java.util.regex)   
  7. OgrePerlSyntax Perl   
  8. OgreRubySyntax Ruby (default)   
  9. OgreSimpleMatchingSyntax Simple Matching   
  10.  
  11. escapeCharacter:   
  12. OgreBackslashCharacter @”\\” Backslash (default)   
  13. OgreGUIYenCharacter [NSString stringWithUTF8String:"\xc2\xa5"] Yen Mark  

可以看出, 這個庫基本上已經(jīng)封裝了所有正則表達式的功能, 而且還兼容多種語法, 很強!

由于很多第三方的庫都沒有什么文檔(Mac下面很少有文檔齊全的第三方庫), 所以自己查看源文件來了解用法基本上已經(jīng)是必要的技能了.

下面就來看看如何使用這套庫.

1、最簡單的使用范例.

  1. // 構(gòu)造正則表達式   
  2. OGRegularExpression *regex = [OGRegularExpression regularExpressionWithString:@"a[^a]*a"];   
  3. // 構(gòu)造匹配結(jié)果枚舉器   
  4. NSEnumerator *enumerator = [regex matchEnumeratorInString:@"alphabetagammadelta"];   
  5. OGRegularExpressionMatch *match;        // 定義匹配結(jié)果   
  6. while ((match = [enumerator nextObject]) != nil) {        // 順序獲得匹配結(jié)果字符串   
  7.     NSLog(@"%@", [match matchedString]);   
  8. }   
  9. // 匹配結(jié)果:   
  10. //    alpha   
  11. //    aga   
  12. //    adelta  

2、替換功能使用范例.

  1. - (void)replaceTest   
  2. {   
  3.     OGRegularExpression        *celciusRegex;   
  4.     celciusRegex = [OGRegularExpression regularExpressionWithString:@"([+-]?\\d+(?:\\.\\d+)?)C\\b"];   
  5.     NSString    *targetString = @"36.5C, 3.8C, -195.8C";   
  6.     NSLog(@"%@", [celciusRegex replaceAllMatchesInString:targetString   
  7.         delegate:self   
  8.         replaceSelector:@selector(fahrenheitFromCelsius:contextInfo:)   
  9.         contextInfo:nil]);   
  10.     // 處理結(jié)果: 97.7F, 38.8F, -320.4F   
  11. }   
  12.  
  13. // 攝氏度轉(zhuǎn)換到華氏溫度.   
  14. - (NSString*)fahrenheitFromCelsius:(OGRegularExpressionMatch*)aMatch contextInfo:(id)contextInfo   
  15. {   
  16.     double        celcius = [[aMatch substringAtIndex:1] doubleValue];   
  17.     double        fahrenheit = celcius * 9.0 / 5.0 + 32.0;   
  18.     return [NSString stringWithFormat:@"%.1fF", fahrenheit];    // 返回替換結(jié)果.   
  19. }  

3、帶名稱匹配組使用范例.

  1. OGRegularExpression *regex = [OGRegularExpression regularExpressionWithString:@"<img src=\"(?<imageURL>.+)\".+>"   
  2.         options:OgreCaptureGroupOption   
  3.         syntax:OgreRubySyntax   
  4.         escapeCharacter:OgreBackslashCharacter];   
  5.  
  6. NSArray *matches = [regex allMatchesInString:@"<img src=\"http://test.com/hello.jpg\">"];   
  7.  
  8. if (matches != nil && ([matches count] == 1))   
  9. {   
  10.         OGRegularExpressionMatch *match = [matches objectAtIndex: 0];   
  11.         NSString *result = [match substringNamed:@"ImageURL"];   
  12.         // 結(jié)果: ttp://test.com/hello.jpg   

小結(jié):詳解iPhone應用正則表達式OgreKit使用方法的內(nèi)容介紹完了,希望通過本文的學習能對你有所幫助!

責任編輯:zhaolei 來源: 互聯(lián)網(wǎng)
相關推薦

2010-03-25 18:25:36

Python正則表達式

2011-08-16 17:28:49

iPhone SDK正則表達式

2009-09-16 17:29:30

正則表達式使用詳解

2009-02-17 09:10:01

正則表達式Java優(yōu)化

2009-09-16 18:19:34

正則表達式組

2009-08-20 16:23:32

C#正則表達式語法

2024-09-14 09:18:14

Python正則表達式

2009-08-03 17:27:14

C#正則表達式

2024-10-17 17:03:43

SQL正則表達式MySQL

2009-09-16 16:22:04

正則表達式匹配

2019-09-24 09:29:26

Python數(shù)據(jù)接口

2019-05-21 10:42:41

Python正則表達式

2011-07-11 12:33:30

JAVA

2015-10-08 09:15:37

C++源碼分析

2023-10-07 08:25:09

Java處理工具正則表達式

2019-12-17 17:01:02

MySQLSQL數(shù)據(jù)庫

2018-09-27 15:25:08

正則表達式前端

2009-09-16 14:32:43

PHP正則表達式替換

2011-08-23 17:46:09

LUA正則表達式模式

2020-09-04 09:16:04

Python正則表達式虛擬機
點贊
收藏

51CTO技術棧公眾號