正則表達(dá)式的使用

1.正則表達(dá)式的語法

iOS開發(fā)中正則表達(dá)式的基礎(chǔ)使用

2.正則表達(dá)式不常用的語法

Q:經(jīng)巢艄冢看見的正則前面的 (?i) (?s) (?m) (?is) (?im) 是什么意思?
A: 稱為內(nèi)聯(lián)匹配模式地粪,通常用內(nèi)聯(lián)匹配模式代替使用枚舉值RegexOptions指定的全局匹配模式咕宿,寫起來更簡(jiǎn)潔。
(?i) 表示所在位置右側(cè)的表達(dá)式開啟忽略大小寫模式
(?s) 表示所在位置右側(cè)的表達(dá)式開啟單行模式。 更改句點(diǎn)字符 (.) 的含義错负,以使它與每個(gè)字符(而不是除 \n 之外的所有字符)匹配恭金。
注意:
(?s)通常在匹配有換行的文本時(shí)使用
(?m) 表示所在位置右側(cè)的表示式開啟指定多行模式操禀。 更改 ^ 和 $ 的含義,以使它們分別與任何行的開頭和結(jié)尾匹配横腿, 而不只是與整個(gè)字符串的開頭和結(jié)尾匹配颓屑。
注意:
(?m)只有在正則表達(dá)式中涉及到多行的“^”和“$”的匹配時(shí),才使用Multiline模式耿焊。
上面的匹配模式可以組合使用揪惦,比如(?is),(?im)。 另外罗侯,還可以用(?i:exp)或者(?i)exp(?-i)來指定匹配的有效范圍器腋。

(?<=)零寬度正回顧后發(fā)斷言。
僅當(dāng)子表達(dá)式在此位置的左側(cè)匹配時(shí)才繼續(xù)匹配钩杰。例如纫塌,(?<=19)99 與跟在 19 后面的 99 的實(shí)例匹配。此構(gòu)造不會(huì)回溯榜苫。

3.ios oc 正則表達(dá)式分割字符串為字符串?dāng)?shù)組

//初始化一個(gè)   NSRegularExpression 對(duì)象 注:_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 是每個(gè)和表達(dá)式匹配好的字符串护戳。
        str1 = [_str substringWithRange:b.range];
        NSLog(@" str 1 is %@",str1);
    }
//獲得匹配的字符串的個(gè)數(shù)

NSUInteger numberOfMatches = [regex numberOfMatchesInString:_str options:0 range:NSMakeRange(0, [_str length])];
//替換匹配的字符串  $0很重要 $0不行的話 $1依此類推 打印了看結(jié)果
NSString *modifiedString = [regex stringByReplacingMatchesInString:_str
                                                               options:0
                                                                 range:NSMakeRange(0, [_str length])
                                                          withTemplate:@"<a href=\\"$0\\">$0</a>"];
NSLog(@"######## the modified string is %@",modifiedString);

4.正則表達(dá)式獲得WebView內(nèi)容按段落分割為數(shù)組

//解析字符串
-(NSArray *)getZZwithString:(NSString *)string{
    NSArray *strArray = nil;
    if (string.length == 0) {
        return strArray;
    }
    //初步去除HTML標(biāo)簽
    NSRegularExpression *regularExpretion=[NSRegularExpression regularExpressionWithPattern:@"<[^>]*>| " options:0 error:nil];
    string=[regularExpretion stringByReplacingMatchesInString:string options:NSMatchingReportProgress range:NSMakeRange(0, string.length) withTemplate:@""];
    
//去除剩余尖括號(hào)(-->)之間的內(nèi)容(由于尖括號(hào)內(nèi)有換行符) 
    NSRegularExpression *regularExp = [NSRegularExpression regularExpressionWithPattern:@"(?is)(?<=-->).*?(?=s-->)" options:0 error:nil];
    string = [regularExp stringByReplacingMatchesInString:string options:NSMatchingReportProgress range:NSMakeRange(0, string.length) withTemplate:@""];
    string = [string stringByReplacingOccurrencesOfString:@"-->s-->" withString:@""];
//去除多余空格
    string = [string stringByReplacingOccurrencesOfString:@" " withString:@""];
//去除尾部多余內(nèi)容
    string = [string stringByReplacingOccurrencesOfString:@"jQuery(document).ready(function(){" withString:@""];
    string = [string stringByReplacingOccurrencesOfString:@"App.init();" withString:@""];
    string = [string stringByReplacingOccurrencesOfString:@"});" withString:@""];
    string = [string stringByReplacingOccurrencesOfString:@"\\t" withString:@""];
    //拆分為數(shù)組
    NSRegularExpression *regularEx=[NSRegularExpression regularExpressionWithPattern:@".+(?=\\n)" options:0 error:nil];
    NSArray * matches = [regularEx matchesInString:string options:0 range:NSMakeRange(0, string.length)];
    NSMutableArray *tempArray = [[NSMutableArray alloc] init];
    for (NSTextCheckingResult *check in matches) {
        NSString *str = [string substringWithRange: check.range];
//        NSLog(@"這里這里---%@", str);
        [tempArray addObject:str];
    }
    strArray = tempArray;
    
    
    return strArray;
}

//UIWebViewDelegate 加載完畢獲取HTML內(nèi)容
-(void)webViewDidFinishLoad:(UIWebView *)webView{
    [SVProgressHUD dismiss];
    UIWebView *web = webView;
    
    //獲取所有的html
    
    NSString *allHtml = @"document.documentElement.innerHTML";
    
    //獲取網(wǎng)頁title
    
    NSString *htmlTitle = @"document.title";
    
    //獲取網(wǎng)頁的一個(gè)值
    
    NSString *htmlNum = @"document.getElementById('title').innerText";
    
    //獲取到得網(wǎng)頁內(nèi)容
    
    NSString *allHtmlInfo = [web stringByEvaluatingJavaScriptFromString:allHtml];
    
//    NSLog(@"allHtmlInfo====%@",allHtmlInfo);
    
    NSString *titleHtmlInfo = [web stringByEvaluatingJavaScriptFromString:htmlTitle];
    
    NSLog(@"htmlTitle=====%@",titleHtmlInfo);
    
    NSString *numHtmlInfo = [web stringByEvaluatingJavaScriptFromString:htmlNum];
    
    NSLog(@"numHtmlInfo===%@",numHtmlInfo);
    self.htmlStr = allHtmlInfo;
//    NSString *currentURL = [webView stringByEvaluatingJavaScriptFromString:@"document.location.href"];
//    NSLog(@"url結(jié)果在這---%@",currentURL);
    //轉(zhuǎn)換內(nèi)容
    self.strArray = [self getZZwithString:self.htmlStr];
    for (NSString *str in self.strArray) {
        NSLog(@"檢查檢查檢查----%@",str);
    }
    
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市垂睬,隨后出現(xiàn)的幾起案子媳荒,更是在濱河造成了極大的恐慌,老刑警劉巖驹饺,帶你破解...
    沈念sama閱讀 218,640評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件钳枕,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡赏壹,警方通過查閱死者的電腦和手機(jī)鱼炒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蝌借,“玉大人昔瞧,你說我怎么就攤上這事∑杏樱” “怎么了自晰?”我有些...
    開封第一講書人閱讀 165,011評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)稍坯。 經(jīng)常有香客問我酬荞,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,755評(píng)論 1 294
  • 正文 為了忘掉前任混巧,我火速辦了婚禮枪向,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘咧党。我一直安慰自己秘蛔,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,774評(píng)論 6 392
  • 文/花漫 我一把揭開白布凿傅。 她就那樣靜靜地躺著缠犀,像睡著了一般。 火紅的嫁衣襯著肌膚如雪聪舒。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,610評(píng)論 1 305
  • 那天虐急,我揣著相機(jī)與錄音箱残,去河邊找鬼。 笑死止吁,一個(gè)胖子當(dāng)著我的面吹牛被辑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播敬惦,決...
    沈念sama閱讀 40,352評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼盼理,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了俄删?” 一聲冷哼從身側(cè)響起宏怔,我...
    開封第一講書人閱讀 39,257評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎畴椰,沒想到半個(gè)月后臊诊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,717評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡斜脂,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,894評(píng)論 3 336
  • 正文 我和宋清朗相戀三年抓艳,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片帚戳。...
    茶點(diǎn)故事閱讀 40,021評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡玷或,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出片任,到底是詐尸還是另有隱情偏友,我是刑警寧澤,帶...
    沈念sama閱讀 35,735評(píng)論 5 346
  • 正文 年R本政府宣布蚂踊,位于F島的核電站约谈,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜棱诱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,354評(píng)論 3 330
  • 文/蒙蒙 一泼橘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧迈勋,春花似錦炬灭、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至厦凤,卻和暖如春鼻吮,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背较鼓。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工椎木, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人博烂。 一個(gè)月前我還...
    沈念sama閱讀 48,224評(píng)論 3 371
  • 正文 我出身青樓香椎,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親禽篱。 傳聞我的和親對(duì)象是個(gè)殘疾皇子畜伐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,974評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容