1. 程式人生 > >IOS NSRegularExpression 解析正則表示式

IOS NSRegularExpression 解析正則表示式

iOS 中可以通過 NSPredicate 來處理正則表示式。相關資料如下:

在 iOS 中,我們使用 NSPredicate 的字串比較功能來進行正則表示式處理,其比較關鍵字為:MATCHES

下面,列舉一個匹配6-15個由字母/數字組成的字串的正則表示式,來看看 NSPredicate 的具體使用:

    NSString * regex        = @"(^[A-Za-z0-9]{6,15}$)";
NSPredicate * pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@
", regex];
BOOL isMatch = [pred evaluateWithObject:@"123456ABCde"];

初始化一個   NSRegularExpression 物件   注:_str是要匹配的字串

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"http://([\\w-]+\\.)+[\\w-]+(/[\\w- ./?%&=]*)?" options:NSRegularExpressionCaseInsensitive error:nil];

獲得所有匹配了表示式的字串。

    NSArray *array =    nil;

    array = [regex matchesInString:_str options:0 range:NSMakeRange(0, [_str length])];
    NSString *str1 = nil;
    for (NSTextCheckingResult* b in array)

    {

         str1 是每個和表示式匹配好的字串。


        str1 = [_str substringWithRange:b.range];
        NSLog(@" str 1 is %@",str1);


    }

獲得匹配的字串的個數

NSUInteger numberOfMatches = [regex numberOfMatchesInString:_str options:0 range:NSMakeRange(0, [_str length])];

替換匹配的字串  $0很重要 $0不行的話 $1依此類推 列印了看結果


NSString *modifiedString = [regex stringByReplacingMatchesInString:_str
                                                               options:0
                                                                 range:NSMakeRange(0, [_str length])
                                                          withTemplate:@"<a href=\"$0\">$0</a>"];
NSLog(@"######## the modified string is %@",modifiedString);

2. 

NSString *regExStr =@"<input type='hidden' id='([G|U]{1})(\\d+)' value='(.*?)'>";

               NSError *error = NULL;

NSRegularExpression *regex = [NSRegularExpressionregularExpressionWithPattern:regExStr options:NSRegularExpressionCaseInsensitiveerror:&error];

                [regexenumerateMatchesInString:addressBookString options:0 range:NSMakeRange(0, [addressBookStringlength]) usingBlock:^(NSTextCheckingResult *regResult,NSMatchingFlags flags, BOOL *stop) {

                   NSString *type = [NSStringstringWithString:[addressBookString substringWithRange:[regResult rangeAtIndex:1]]];

                   NSString *nameID = [NSStringstringWithString:[addressBookString substringWithRange:[regResult rangeAtIndex:2]]];

                   NSString *name = [NSStringstringWithString:[addressBookString substringWithRange:[regResult rangeAtIndex:3]]];

                   if([type isEqualToString:@"G"]){

                       AddressBookNode *addressBookNode = [[AddressBookNodealloc]init];

                        addressBookNode.isDirectory =TRUE;

                        addressBookNode.nodeLevel =1;

                        addressBookNode.nodeName = name;

                        addressBookNode.nodeID = nameID;

                        [addressBookaddChild:addressBookNode];

                    }else{

                       AddressBookNode *addressBookNode = [[AddressBookNodealloc]init];

                        addressBookNode.isDirectory =FALSE;

                        addressBookNode.nodeLevel =1;

                        addressBookNode.nodeName = name;

                        addressBookNode.nodeID = nameID;

                        [addressBookaddChild:addressBookNode];

                    }

                }];


3. 
char *utf8CString = "test;;; test2 what are you doing, now?";
06 NSString *regexString = @";";
07 NSString *sourceString = [NSString stringWithUTF8String:utf8CString];  
08 NSString *resultString = [sourceString stringByReplacingOccurrencesOfRegex:regexString withString:@"_"];
09
10 NSLog(@"sourceString: \"%@\"", sourceString);
11 NSLog(@"resultString: \"%@\"", resultString);  
12
13 char *utf8CString1 = "Copyright \xC2\xA9 \xE2\x89\x85 2008";
14 NSString *regexString1 = @"Copyright (.*) (\\d+)";  
15

相關推薦

IOS NSRegularExpression 解析表示式

iOS 中可以通過 NSPredicate 來處理正則表示式。相關資料如下: 在 iOS 中,我們使用 NSPredicate 的字串比較功能來進行正則表示式處理,其比較關鍵字為:MATCHES 下面,列舉一個匹配6-15個由字母/數字組成

iOS開發之表示式快速教程(NSPredicate、NSRegularExpression)

1、校驗密碼強度 密碼的強度必須包含大小寫字母和數字的組合,不能使用特殊字元,長度在8-10之間 ^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$ 2、校驗中文 字串只能是中文 ^[\\u4e00-\\u9fa5]{0,}$ 3、由數字,26個英文字母或下劃線

lrc歌詞解析(表示式)與歌詞卡拉ok顯示的思路

(2):安排一個動作在不同的執行緒中執行。在播放的同時,負責重新整理歌詞資訊,由於歌詞資訊時間點不連續,不可能將取得的歌曲時間play.getCurrentPosition()點去取得相應的歌詞資訊。所以只能去估計,遍歷所有歌詞時間點,當時間有大於play.getCurrentPosition(),就停止遍歷

iOS--表示式

一、校驗數字的表示式 數字:^[0-9]*$ n位的數字:^\d{n}$ 至少n位的數字:^\d{n,}$ m-n位的數字:^\d{m,n}$ 零和非零開頭的數字:^(0|[1-9][0-9]*)$ 非零開頭的最多帶兩位小數的數字:^([1-9][0

iOS-字串替換-表示式-例子

- (NSString *)replaceImageHtml:(NSString *)oldHtml { NSString *regex = @"(<img.*?/>)"; NSRange r; NSMutableString *newHtml = [NSMutableS

iOS Objective-C 表示式

做iOS開發已經兩年多了。最近,在整理以前的程式碼,找到當時卡殼的一些程式碼片段,寫部落格跟大家分享一下。歡迎iOS初學者訂閱我的部落格,有什麼問題可以留言交流。以下正文: NSRegularExpression *regularExpression = [[NSR

iOS表示式簡單應用

想要了解基本語法的可以進入下面網站自行學習 自學地址Runoob 正則表示式在iOS的簡單應用 // 匹配小寫a開頭的字串 NSString * regex = @"^a.*"; NSPredicate *pred = [NSPredicate predicateWithForm

解析posix與perl標準的表示式區別

正則表示式(Regular Expression,縮寫為regexp,regex或regxp),又稱正規表示式、正規表示式或常規表示式或正規化表示法或正規表示法,是指一個用 來描述或者匹配一系列符合某個句法規則的字串的單個字串。在很多文字編輯器或其他工具裡,正則表示式通常被用來檢索和/或替換那些符合某個模式的

C#Json文件解析,寫入,表示式轉換。Unity建立Json文件以及寫入。

C#:     解析:         解析工具:LitJson,JsonConvert       &nb

Python指令碼--基於表示式對檔案進行解析

Python指令碼--基於正則表示式對檔案進行解析     首先需要了解正則表示式中的相應指令(compile、findall),我對此的理解是compile相當於一個規則的制定者,將匹配的規則制定出來,後續具體的操作是findall的工作【選擇適當的規則

python html抓取,並用re表示式解析(一)

html抓取,並用re進行解析 #coding=utf-8 import urllib.request import re ''' url :"http://money.163.com/special/pinglun/" 抓取第一頁的新聞資訊,並按照以下規格輸出。 [ {'ti

python html抓取,並用re表示式解析(二)

需求: url: “http://search.jd.com/Search?keyword=幼貓貓糧&enc=utf-8#filter” 給出一個jd_search(keyword)方法,keyword為你要查詢的東西,比如:貓糧、手機,替換上面url中的keyword,得到一個新網

java表示式解析

“正則表示式”到用時方恨少! 學習正則表示式,我覺得還是要循循漸進,由易到難,一點點深入......(本人也在學習中這裡提供個人理解思路,以及一些大神們的獨到講解。。。。。。) 一、知道java正則表示式是幹什麼的? 百度百科定義: 其實這已經說得很明確了,正則表示式其實就是一

網頁 EL表示式無法解析和http網頁400錯誤

關於EL正則表示式無法解析的問題 <fmt:formatDate value="${user.bir }" pattern=“yyyy-MM-dd”/> 查看了jsp頁面程式碼: <%@taglib uri="http://java.sun.co

JavaScript表示式練習解析1

var url = 'http://blog.163.com/album?id=1#comment'; var reg = /^(https?:)\/\/([^\/]+)(\/[^\?]*)?(\?[^#]*)?(#.*)?$/; * ​ ^(https?:) 開頭為https: s?表示s{

iOS常用表示式大全

很多不太懂正則的朋友,在遇到需要用正則校驗資料時,往往是在網上去找很久,結果找來的還是不很符合要求。所以我最近把開發中常用的一些正則表示式整理了一下,包括校驗數字、字元、一些特殊的需求等等。給自己留個底,也給朋友們做個參考。 1校驗數字的表示式 數字:^[0-9]*$

效能比較:lxml庫,表示式,BeautifulSoup ,用資料證明lxml解析器速度快

Beautiful Soup支援的解析器 解析器 使用方法 優勢 劣勢 Python標準庫 BeautifulSoup(markup, "html.parse

使用表示式解析URL

   在開發HTTP相關程式時,經常會碰到從網路連結URL中提取協議名、伺服器、路徑等目標物件,如果使用C/C++字串操作函式,那麼則顯得有點麻煩且程式碼不易維護,其實關於文字內容的解析工作,都可優先考慮使用正則表示式庫來解決處理,C++方面的正則庫也有很多種,如atl、pcre、boost。下面

leetcode--Python表示式解析Valid Phone nums

#!/usr/bin/env python import os import re import sys filename=sys.argv[1] fd=open(filename,"r") inde

ios 表示式替換

1. 不可變字串   (content 是不可變) NSRegularExpression *regularExpression = [NSRegularExpressionregularExpressionWithPattern: