- (void)howToUseRegex
{
#pragma mark 1.正則表達(dá)式規(guī)則
/*-------------------------------1.1普通字符-------------------------------*/
// 字母、數(shù)字、漢字、下劃線、非特殊定義的標(biāo)點符號笑窜,都是"普通字符"。表達(dá)式中的普通字符,在匹配一個字符串的時候识补,匹配與之相同的一個字符。
NSString *searchString1_1 = @"abcde";
NSString *regexString1_1 = @"c";
NSString *matchedString1_1 = [searchString1_1 stringByMatching:regexString1_1];
NSLog(@"matchedString1_1:%@",matchedString1_1); // 輸出結(jié)果: c
/*-------------------------------1.2簡單的轉(zhuǎn)義字符-------------------------------*/
// 一些不便書寫的字符辫红,在前面加 "\",如:\n,\t,\\ 等
NSString *searchString1_2 = @"abc$de";
// 記住在字符串中“\”需要用“\\”表示
NSString *regexString1_2 = @"\\$d";
NSString *matchedString1_2 = [searchString1_2 stringByMatching:regexString1_2];
NSLog(@"matchedString1_2:%@",matchedString1_2); // 輸出結(jié)果: $d
/*------------------------1.3能夠與 '多種字符' 匹配的表達(dá)式-------------------------*/
/*
.? ? : 匹配除換行符以外的任意字符
\w? ? : 匹配字母或數(shù)字或下劃線或漢字
\s? ? : 匹配任意的空白符
\d? ? : 匹配數(shù)字
\b? ? : 匹配單詞的開始或結(jié)束
*/
NSString *searchString1_3 = @"abc123";
// 正則表達(dá)式有一條規(guī)則:最先開始的匹配擁有最高的優(yōu)先權(quán)
NSString *regexString1_3 = @"\\d\\d";
NSString *matchedString1_3 = [searchString1_3 stringByMatching:regexString1_3];
NSLog(@"matchedString1_3:%@",matchedString1_3); // 輸出結(jié)果: 12
/*---------------------1.4自定義能夠匹配 '多種字符' 的表達(dá)式-------------------------*/
// 使用方括號 [ ] 包含一系列字符凭涂,能夠匹配其中任意一個字符。用 [^ ] 包含一系列字符贴妻,則能夠匹配其中字符之外的任意一個字符切油。同樣的道理,雖然可以匹配其中任意一個名惩,但是只能是一個澎胡,不是多個。[]本身就隱含了“或”的關(guān)系娩鹉,在[]中使用“|”表示“或”的關(guān)系是不對的攻谁,這樣做只是多了一個普通字符“|”,用來匹配“|”字符本身弯予,()也是同樣道理戚宦。 如:
/*
[ab5@]? ? : 匹配 "a" 或 "b" 或 "5" 或 "@"
[^abc]? ? : 匹配 "a","b","c" 之外的任意一個字符
[f-k]? ? : 匹配 "f"~"k" 之間的任意一個字母
[^A-F0-3] : 匹配 "A"~"F","0"~"3" 之外的任意一個字符
*/
NSString *searchString1_4 = @"abc123";
NSString *regexString1_4 = @"[bcd][bcd]";
NSString *matchedString1_4 = [searchString1_4 stringByMatching:regexString1_4];
NSLog(@"matchedString1_4:%@",matchedString1_4); // 輸出結(jié)果: bc
/*---------------------1.5修飾匹配次數(shù)的特殊符號------------------------------*/
// 使用表達(dá)式再加上修飾匹配次數(shù)的特殊符號,那么不用重復(fù)書寫表達(dá)式就可以重復(fù)匹配
/*
{n}? :? 表達(dá)式重復(fù)n次
{m,n} :? 表達(dá)式至少重復(fù)m次锈嫩,最多重復(fù)n次
{m,}? :? 表達(dá)式至少重復(fù)m次
?? ? :? 匹配表達(dá)式0次或者1次受楼,相當(dāng)于 {0,1}
+? ? :? 表達(dá)式至少出現(xiàn)1次垦搬,相當(dāng)于 {1,}
*? ? :? 表達(dá)式不出現(xiàn)或出現(xiàn)任意次,相當(dāng)于 {0,}
*/
NSString *searchString1_5 = @"It costs $12.5";
NSString *regexString1_5 = @"\\d+\\.?\\d";
NSString *matchedString1_5 = [searchString1_5 stringByMatching:regexString1_5];
NSLog(@"matchedString1_5:%@",matchedString1_5); // 輸出結(jié)果: 12.5