二.正则表达式的使用

2016-10-26  本文已影响9人  蓝色的雪啦

- (void)howToUseRegex

{

#pragma mark 1.正则表达式规则

/*-------------------------------1.1普通字符-------------------------------*/

// 字母、数字、汉字、下划线、非特殊定义的标点符号,都是"普通字符"。表达式中的普通字符,在匹配一个字符串的时候,匹配与之相同的一个字符。

NSString *searchString1_1 = @"abcde";

NSString *regexString1_1 = @"c";

NSString *matchedString1_1 = [searchString1_1 stringByMatching:regexString1_1];

NSLog(@"matchedString1_1:%@",matchedString1_1); // 输出结果: c

/*-------------------------------1.2简单的转义字符-------------------------------*/

// 一些不便书写的字符,在前面加 "\",如:\n,\t,\\ 等

NSString *searchString1_2 = @"abc$de";

// 记住在字符串中“\”需要用“\\”表示

NSString *regexString1_2 = @"\\$d";

NSString *matchedString1_2 = [searchString1_2 stringByMatching:regexString1_2];

NSLog(@"matchedString1_2:%@",matchedString1_2); // 输出结果: $d

/*------------------------1.3能够与 '多种字符' 匹配的表达式-------------------------*/

/*

.    : 匹配除换行符以外的任意字符

\w    : 匹配字母或数字或下划线或汉字

\s    : 匹配任意的空白符

\d    : 匹配数字

\b    : 匹配单词的开始或结束

*/

NSString *searchString1_3 = @"abc123";

// 正则表达式有一条规则:最先开始的匹配拥有最高的优先权

NSString *regexString1_3 = @"\\d\\d";

NSString *matchedString1_3 = [searchString1_3 stringByMatching:regexString1_3];

NSLog(@"matchedString1_3:%@",matchedString1_3); // 输出结果: 12

/*---------------------1.4自定义能够匹配 '多种字符' 的表达式-------------------------*/

// 使用方括号 [ ] 包含一系列字符,能够匹配其中任意一个字符。用 [^ ] 包含一系列字符,则能够匹配其中字符之外的任意一个字符。同样的道理,虽然可以匹配其中任意一个,但是只能是一个,不是多个。[]本身就隐含了“或”的关系,在[]中使用“|”表示“或”的关系是不对的,这样做只是多了一个普通字符“|”,用来匹配“|”字符本身,()也是同样道理。 如:

/*

[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); // 输出结果: bc

/*---------------------1.5修饰匹配次数的特殊符号------------------------------*/

// 使用表达式再加上修饰匹配次数的特殊符号,那么不用重复书写表达式就可以重复匹配

/*

{n}  :  表达式重复n次

{m,n} :  表达式至少重复m次,最多重复n次

{m,}  :  表达式至少重复m次

?    :  匹配表达式0次或者1次,相当于 {0,1}

+    :  表达式至少出现1次,相当于 {1,}

*    :  表达式不出现或出现任意次,相当于 {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); // 输出结果: 12.5

上一篇下一篇

猜你喜欢

热点阅读