1. 程式人生 > >iOS中3種正則表示式的使用與比較

iOS中3種正則表示式的使用與比較

iOS中有三種方式來實現正則表示式的匹配。現在將他們都記錄在這裡: 
1.利用NSPredicate(謂詞)匹配 

例如匹配有效郵箱: 

NSString *email = @“[email protected]”; 
NSString *regex = @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; 
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex]; 
BOOL isValid = [predicate evaluateWithObject:email];

謂詞匹配比較靈活,但是需要有謂詞的相關知識。 

2.利用rangeOfString:option:直接查詢 

NSString *searchText = @"// Do any additional setup after loading the view, typically from a nib."; 

NSRange range = [searchText rangeOfString:@"(?:[^,])*\\." options:NSRegularExpressionSearch]; 

if (range.location != NSNotFound) { 
    NSLog(@"%@", [searchText substringWithRange:range]); 
}


options中設定NSRegularExpressionSearch就是表示利用正則表示式匹配,會返回第一個匹配結果的位置。 

3.使用正則表示式類 

NSString *searchText = @"// Do any additional setup after loading the view, typically from a nib.";    
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(?:[^,])*\\." options:NSRegularExpressionCaseInsensitive error:&error];
NSTextCheckingResult *result = [regex firstMatchInString:searchText options:0 range:NSMakeRange(0, [searchText length])];
if (result) {
    NSLog(@"%@\n", [searchText substringWithRange:result.range]);
}

使用系統的正則表示式類(NSRegularExpression)會返回匹配的多個結果。 

小結: 
第一種匹配需要學習NSPredicate的寫法,需要查閱蘋果相關技術文件;如果只關心第一個匹配的結果,第二種匹配較為簡潔;如果需要匹配多個結果,同時匹配多次,第三種方式效率會更高

相關推薦

iOS3表示式的使用比較

iOS中有三種方式來實現正則表示式的匹配。現在將他們都記錄在這裡: 1.利用NSPredicate(謂詞)匹配 例如匹配有效郵箱: NSString *email = @“[email protected]”; NSString *regex = @"[A-Z0-

iOS3表達式的使用比較

regular null 後來 ons sta ring 學習 obj rst 之前我在博文中介紹過iOS中自帶正則表達式的使用(傳送門),後來我發現其實iOS中有三種方式來實現正則表達式的匹配。現在將他們都記錄在這裏: 1.利用NSPredicate(謂詞)匹配

python常見的幾表示式的使用(re.split、re.sub、re.matchre.search)

一、正則表示式之分割 字串的分割是python最常用的操作之一,一般使用split函式,例如: s = "今天/天氣/真好" print(s.split('/')) 輸出為:[‘今天’,‘天氣’,‘真好’]。但split函式只能實現單個字元的分隔,但對於多個分

Linux_Shell_Shell 表示式 常用表示式

在Linux Shell 程式設計中,我們常需要用到 正則表示式 進行 檔案的匹配在本篇文章中,我們對Linux shell 中的正則表示式 做一個總結,方便之後的shell 編寫。參考文章:shell程式設計之正則表示式shell script 在if 的判斷條件正則表示式

C#表示式回車換行符

C#中,讀取文字檔案內容,裡面往往有許多回車換行符(“\r\n”),雖然一般不可見,但卻實實在在的存在。這時候,使用正則表示式進行匹配,需要考慮其存在。今天就遇到這樣一個問題: 有文字檔案內容如下:

表示式Python(二更 2018 3.7 18:07)

正則表示式 自己去網上查,這裡不教。 re模組:核心函式和方法 使用compile()函式編譯正則表示式 使用任何可選的標記來編譯正則表示式的模式,然後返回一個正則表示式物件。 推薦預編譯,但並不是必須的。 如果需要編譯,就是用編譯後的方法;

Python常用的表示式

正則表示式是對字串操作的一種邏輯公式,就是用事先定義好的一些特定字元、及這些字元的組合,組成一個“規則字串”,這個“規則字串”用來表達對字串的一種過濾邏輯。(非python獨有,但是python的re模組提供了實現,在python中寫正則表示式幾乎都用這個庫) 樣例展示: 這裡要用到線上正則

JavaScript表示式表單驗證

一.非空驗證 判斷非空 最好還是不要使用trim()方法 有的瀏覽器可能不支援 推薦使用正則表示式 判斷是否為空 // " abc "----->"abc "------>"abc"function trim (txt) { var afterText = txt.replace(/^\s*

jsstring之表示式replace方法詳解

本篇文章主要介紹了js中string之正則表示式replace方法詳解,replace方法是javascript涉及到正則表示式中較為複雜的一個方法,嚴格上說應該是string物件的方法。 replace方法是javascript涉及到正則表示式中較為複雜的一個方法,嚴格上說應該是string物

python常用的表示式符號

'.' 預設匹配除\n之外的任意一個字元,若指定flag DOTALL,則匹配任意字元,包括換行 '^' 匹配字元開頭,若指定flags MULTILINE,這種也可以匹配上(r"^a","\nabc\neee",flags=re.MULTILINE) '$' 匹配字元結尾,或e

Nginx模組開發使用PCRE表示式匹配

Nginx內部對pcre庫的常用操作進行了封裝. 封裝的原始碼位於nginx/src/core/ngx_regex.c, 同時將pcre內使用的記憶體池更變為了Nginx的記憶體池. pcre_compile: Nginx封裝了pcre_compile方法. 方法名為ngx_regex_

3.初識表示式

本節內容出自《Java語言程式設計》基礎篇 原書第10版 正則表示式(規則表示式) 1.定義:regex,是一個字串,用來描述匹配一個字串集合的模式。 2.功能:對於處理字串來說,它是一個強大的工具,可以用來匹配,替換和分割字串。 3.組成:由字面值字元和特殊符號組成。 n1:反斜槓是一個特殊的字元

工作常用的表示式

一、正整數 /^[1-9]\d*$/ 二、8-20位數字、字母組合,不能是單純的數字或字母 /^(?![0-9]+$)(?![A-Za-z]+$)[0-9A-Za-z\\W]{8,20}$/ 三、請輸入正確的手機號 /^1[3456789]\d{9}$/

Java 實際應用常用的表示式

1.正則表示式 jdk1.4 開始提供了正則表示式的支援; java.util.regex Pattern類:此類物件如果想要獲得必須使用compile(), 此方法的功能式編譯正則 Matcher類:通過Patern類取得;2.正則標記  1.所有的正則可以使用的標記都在java.uti

GNU/Linux 表示式三劍俠(grep,sed,awk)(精)

相關好文章推薦: GNU 的正則表示式 傳聞中三劍俠的威名響徹雲霄,傳說中若沒有正則表示式的神功,三劍俠也是芸芸眾生,江湖中傳言"欲成劍俠,先練神功",不管傳說或傳聞我都信。 度度果然不是蓋的,一下就拔出了正則的歷史,不看不知道,一看就大有來頭,大約就是國外幾位猛人科學家在搞一個偉大的工程時誕

鳥哥的Linux私房菜基礎篇 第十一章 表示式檔案格式化處理

1. 正則的概念 正則表示式就是處理字串的方法,他是以行為單位來進行字串的處理行為, 正則表示式通過一些特殊符號的輔助,可以讓使用者輕易的達到“搜尋/刪除/取代”某特定字串的處理程式! 2. 基礎

SAP HANA資料庫如何使用表示式

        作為一個程式設計師小白,剛進公司上班兩個周,我開始熟悉並參與公司的一個專案(當然,只是做一些最簡單的查詢來練練手啦,複雜的也不會。。。),帶我的同事讓我在某個表的資料列表頁面設定幾個按鈕,來根據過期狀態查詢記錄,於是我開始了,這個專案的資料庫是用hana來管理

linux學習筆記之shell程式設計(一)表示式字元處理

shell程式設計 基礎正則表示式 正則和萬用字元的區別:正則是包含匹配,匹配檔案內容,grep,awk等支援正則表示式。萬用字元是完全匹配,匹配檔名,例如find,ls不認識正則表示式 ####正則表示式常用的字元(注意區別於萬用字元裡面的符號)#### -*

Perl表示式(3) - 用表示式處理文字

用正則表示式處理文字 3.1 替換操作 3.1.1 用s///進行替換操作 (substitution) 如果把m//想象為文理處理器的字串“查詢”功能,那麼s///就是查詢並替換功能。 如:s/Barney/Fred/; 可以實現將Barney替

表示式模式匹配以及捕獲

      首次接觸正則表示式是在工作中接觸到ruby語言指令碼開發的時候,鑑於工作中經常需要對reply內容中的相關欄位進行提取和比較,正則表示式就成為必須掌握的,但僅僅瞭解正則表示式的基本規則還不能完成上面說的這個工作,我們還需要了解跟這個密切相關的另外兩