美文网首页
二.正则表达式的使用

二.正则表达式的使用

作者: 蓝色的雪啦 | 来源:发表于2016-10-26 15:05 被阅读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

    相关文章

      网友评论

          本文标题:二.正则表达式的使用

          本文链接:https://www.haomeiwen.com/subject/cbxjjttx.html