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

2021-07-05 21:33:43 字數 1427 閱讀 4785

之前我在博文中介紹過ios中自帶正規表示式的使用(傳送門),後來我發現其實ios中有三種方式來實現正規表示式的匹配。現在將他們都記錄在這裡:

1.利用nspredicate(謂詞)匹配

nsstring *email = @「[email protected]」;

nsstring

*regex = @"[a-z0-9a-z._%+-]+@[a-za-z0-9.-]+\\.[a-za-z]";

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)

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)

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

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

iOS 的正規表示式使用

判斷文字是否含有 emoji 部分第三方 emoji 不能識別 bool iscontainsemoji nsstring string else if substring.length 1 else else if 0x2b05 hs hs 0x2b07 else if 0x2934 hs hs ...

正規表示式簡介(微軟) 3 使用正規表示式

使用正規表示式 在典型的搜尋和替換操作中,必須提供要查詢的確切文字。這種技術對於靜態文字中的簡單搜尋和替換任務可能足夠了,但是由於它缺乏靈活性,因此在搜尋動態文字時就有困難了,甚至是不可能的。使用正規表示式,就可以 1.測試字串的某個模式。例如,可以對乙個輸入字串進行測試,看在該字串是否存在乙個 號...

iOS 正規表示式

正規表示式,又稱正規表示法 常規表示法 英語 regular expression,在 中常簡寫為regex regexp或re 電腦科學的乙個概念。正規表示式使用單個字串來描述 匹配一系列符合某個句法規則的字串。在很多文字編輯器裡,正規表示式通常被用來檢索 替換那些符合某個模式的文字。系統自帶的,...