成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

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

上網找了不少各式各樣的庫, 用下來要么體積太大, 要么結構設計的不舒服, 最后把目標鎖定在了 OgreKit 上。

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

下面介紹一下主要的類:

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

先介紹一下 OGRegularExpression.

通過查看它的源文件可以看到參數最多的一個靜態構造函數的簽名如下

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

參數 options 可以接受以下值的組合:

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

參數 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  

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

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

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

1、最簡單的使用范例.

  1. // 構造正則表達式   
  2. OGRegularExpression *regex = [OGRegularExpression regularExpressionWithString:@"a[^a]*a"];   
  3. // 構造匹配結果枚舉器   
  4. NSEnumerator *enumerator = [regex matchEnumeratorInString:@"alphabetagammadelta"];   
  5. OGRegularExpressionMatch *match;        // 定義匹配結果   
  6. while ((match = [enumerator nextObject]) != nil) {        // 順序獲得匹配結果字符串   
  7.     NSLog(@"%@", [match matchedString]);   
  8. }   
  9. // 匹配結果:   
  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.     // 處理結果: 97.7F, 38.8F, -320.4F   
  11. }   
  12.  
  13. // 攝氏度轉換到華氏溫度.   
  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];    // 返回替換結果.   
  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.         // 結果: ttp://test.com/hello.jpg   

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

責任編輯:zhaolei 來源: 互聯網
相關推薦

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優化

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數據接口

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數據庫

2011-08-23 17:46:09

LUA正則表達式模式

2009-09-16 14:32:43

PHP正則表達式替換

2020-09-04 09:16:04

Python正則表達式虛擬機

2018-09-27 15:25:08

正則表達式前端
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: av在线天天| 中文字幕四虎 | 国产婷婷综合 | 欧美一区二区三区在线播放 | 欧美啊v在线观看 | 欧美a级成人淫片免费看 | 欧美久久一区二区 | 欧美成人专区 | 日韩精品久久久久 | 精品网 | 亚洲综合视频 | 欧美日韩精品久久久免费观看 | 久久久久国产精品www | 美女国内精品自产拍在线播放 | 午夜激情免费 | 欧美久久久久久久 | 成人午夜毛片 | 狠狠干综合视频 | 国产日韩一区二区三免费 | 亚洲国产成人在线视频 | 九九热国产精品视频 | 国产精品爱久久久久久久 | 亚洲综合色视频在线观看 | 成人午夜网站 | 亚洲精品一区二区三区在线 | 日韩不卡视频在线 | 超碰在线免费公开 | 国产精品美女久久久久久不卡 | 亚洲综合色网 | 在线日韩视频 | 草久久久 | 在线观看免费av片 | 一区二区三区av夏目彩春 | 亚洲高清在线观看 | 国产国产精品久久久久 | 日韩高清一区二区 | 国产精品久久久久久一区二区三区 | 欧美一级欧美三级在线观看 | 中文字幕免费视频 | 亚洲欧美日韩电影 | 九九九久久国产免费 |