美文网首页
正则表达式

正则表达式

作者: 思念那年慕云 | 来源:发表于2017-03-09 10:16 被阅读19次

    百度百科中的详细介绍

    一个正则表达式组成:
    条件表达式(0-n个,不一定有)+子表达式(必须有)

    表达式 预查方式
    (?=[pattern]+$) 正向肯定预查(allIs,全都是)
    (?![pattern]+$) 正向否定预查(notAll,不全是)
    (?=.*[pattern]) 正向肯定预查(contain,包含)
    (?!.*[pattern]) 正向否定预查(notContain,不包含)
    (?!.*[pattern].*) 正向否定预查(allNot,全不是)
    (?![pattern]).* 正向否定预查(allNot,全不是)

    分析上表:
    粗略的理解:?= 全都是?! 不全是?=.* 包含?!.* 不包含

    第五个: (?!.*[pattern].*)

    ?!.*[pattern]表示不包含pattern,结尾的.*表示除\n\r之外的任意字符出现0-n次,也就是0次,1次,2次。。。n次的都匹配出来了,所以是全不是。


    同时包含字母和数字怎么写?

    ((?=.*\d)(?=.*[a-zA-Z]))[\da-zA-Z]*
    分析:条件表达式最外层括号加不加都行,而且条件表达式限定了必须包含字母或者数字,而且后面的[\da-zA-Z]又限定了必须是字母或者数字,*表示出现任意次,但是由于条件表达式,这里的*也就不可能匹配到为0的时候。

    匹配:(数字)

        #匹配str中的(数字)
        NSString *str = @"(01)9729/219(02)4361371";  
        NSString *reguStr = @"\\([0-9]*\\)";
    

    匹配@®开头,®结尾的字符串。

    #pragma Mrhan- 匹配@®开头,®结尾的字符串。
    -(void)zhengZeBiaoDaShi
    {
        NSString *contentString = @"@韩sdafasd@®2 ®军,woca@®nimaheh呵呵®";
        NSString *reguStr = @"@®([\\da-zA-Z[\u4e00-\u9fa5]]*)®";
        //(@®|®)
        //@®([\\da-zA-Z[\u4e00-\u9fa5]]*)®
        NSLog(@"regustr===%@",reguStr);
        
        NSRegularExpression * regularExpression = [NSRegularExpression regularExpressionWithPattern:reguStr options:NSRegularExpressionCaseInsensitive error:nil];
        
        //匹配字符串  第一个参数: 在哪个字符串中进行匹配  第二个参数: 匹配方式: 全部匹配 第三个参数: 匹配范围  返回值 (NSArray<NSTextCheckingResult *> *)
        
        NSArray * checkingResult = [regularExpression matchesInString:contentString options:NSMatchingReportCompletion range:NSMakeRange(0, contentString.length)];
        
        NSLog(@"checkingResult--%@",checkingResult);
        
        //遍历数组., 获取匹配成功的字符串的范围 NSRange (因为替换后, 字符串的长度在改变,所以使用倒序来进行替换,来避免范围越界问题)
        for (NSInteger i = checkingResult.count-1  ; i<checkingResult.count; i--) {
            
            //获取range
            NSTextCheckingResult *result = checkingResult[i];
            
            
            NSLog(@"result.range--%@",NSStringFromRange(result.range));
            
        }
    
    }
    

    相关文章

      网友评论

          本文标题:正则表达式

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