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

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

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

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

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

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

下面介紹一下主要的類:

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

先介紹一下 OGRegularExpression.

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

  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 來源: 互聯(lián)網
相關推薦

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-09-16 16:22:04

正則表達式匹配

2009-08-03 17:27:14

C#正則表達式

2024-10-17 17:03:43

SQL正則表達式MySQL

2019-09-24 09:29:26

Python數據接口

2019-05-21 10:42:41

Python正則表達式

2011-07-11 12:33:30

JAVA

2023-10-07 08:25:09

Java處理工具正則表達式

2015-10-08 09:15:37

C++源碼分析

2011-08-23 17:46:09

LUA正則表達式模式

2009-09-16 14:32:43

PHP正則表達式替換

2018-09-27 15:25:08

正則表達式前端

2019-12-17 17:01:02

MySQLSQL數據庫

2020-09-04 09:16:04

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

51CTO技術棧公眾號

主站蜘蛛池模板: 国户精品久久久久久久久久久不卡 | 中文字幕韩在线第一页 | 国产精品久久久久久久午夜片 | 午夜看电影在线观看 | 二区三区视频 | 中文字幕视频在线免费 | 香蕉久久久 | 国产精品亚洲精品日韩已方 | 综合色久 | 亚洲高清视频一区二区 | 亚洲国产一| 亚洲一区二区中文字幕 | 日韩α片| 亚洲黄色在线免费观看 | 亚洲欧洲在线看 | 欧美一区二区三区免费电影 | 在线亚州 | 亚洲va在线va天堂va狼色在线 | 日韩中文在线视频 | 麻豆一区二区三区精品视频 | 成人h动漫精品一区二区器材 | 亚洲视频免费 | 亚洲精品久久久久久宅男 | 国产精品三级久久久久久电影 | 91精品国产综合久久久久久丝袜 | 中文字幕免费视频 | 亚洲欧美v | 国产精品久久久久久久岛一牛影视 | 天堂资源最新在线 | 成人深夜小视频 | www.久久99| 亚洲精品91 | av中文在线| 免费在线观看h片 | 日本三级黄视频 | 99视频在线看 | 亚洲第一在线 | 国产视频线观看永久免费 | 日韩二三区| 国产aa| 免费激情网站 |