偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

詳解iPhone應(yīng)用中正則表達(dá)式OgreKit使用方法

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

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

上網(wǎng)找了不少各式各樣的庫(kù), 用下來(lái)要么體積太大, 要么結(jié)構(gòu)設(shè)計(jì)的不舒服, 最后把目標(biāo)鎖定在了 OgreKit 上。

是的, 這是一個(gè)日本程序員寫(xiě)的東西(無(wú)差別仇日的人可以走開(kāi)了), 最讓我頭疼的一點(diǎn)就是沒(méi)有英文文檔…. 就連代碼里面的注釋都是日文的, 還好方法命名非常合理, 靠猜基本都能猜對(duì).

下面介紹一下主要的類:

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

先介紹一下 OGRegularExpression.

通過(guò)查看它的源文件可以看到參數(shù)最多的一個(gè)靜態(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 沒(méi)有選項(xiàng)   
  2. OgreSingleLineOption 只匹配單行   
  3. OgreMultilineOption ‘.’ 將匹配折行   
  4. OgreIgnoreCaseOption 忽略大小寫(xiě)   
  5. OgreExtendOption 使用擴(kuò)展匹配模式   
  6. OgreFindLongestOption 使用最大匹配模式   
  7. OgreFindNotEmptyOption 忽略空匹配   
  8. OgreNegateSingleLineOption   
  9. OgreDontCaptureGroupOption 只匹配有名稱的組   
  10. OgreCaptureGroupOption 匹配有名稱或者無(wú)名稱的組   
  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  

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

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

下面就來(lái)看看如何使用這套庫(kù).

1、最簡(jiǎn)單的使用范例.

  1. // 構(gòu)造正則表達(dá)式   
  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應(yīng)用正則表達(dá)式OgreKit使用方法的內(nèi)容介紹完了,希望通過(guò)本文的學(xué)習(xí)能對(duì)你有所幫助!

責(zé)任編輯:zhaolei 來(lái)源: 互聯(lián)網(wǎng)
相關(guān)推薦

2010-03-25 18:25:36

Python正則表達(dá)式

2011-08-16 17:28:49

iPhone SDK正則表達(dá)式

2009-09-16 17:29:30

正則表達(dá)式使用詳解

2009-02-17 09:10:01

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

2009-09-16 18:19:34

正則表達(dá)式組

2009-08-20 16:23:32

C#正則表達(dá)式語(yǔ)法

2024-09-14 09:18:14

Python正則表達(dá)式

2009-08-03 17:27:14

C#正則表達(dá)式

2024-10-17 17:03:43

SQL正則表達(dá)式MySQL

2009-09-16 16:22:04

正則表達(dá)式匹配

2019-09-24 09:29:26

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

2019-05-21 10:42:41

Python正則表達(dá)式

2011-07-11 12:33:30

JAVA

2015-10-08 09:15:37

C++源碼分析

2023-10-07 08:25:09

Java處理工具正則表達(dá)式

2019-12-17 17:01:02

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

2011-08-23 17:46:09

LUA正則表達(dá)式模式

2009-09-16 14:32:43

PHP正則表達(dá)式替換

2020-09-04 09:16:04

Python正則表達(dá)式虛擬機(jī)

2018-09-27 15:25:08

正則表達(dá)式前端
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)