正则表达式

百度百科中的详细介绍

一个正则表达式组成:
条件表达式(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 *)
    
    NSArray * checkingResult = [regularExpression matchesInString:contentString options:NSMatchingReportCompletion range:NSMakeRange(0, contentString.length)];
    
    NSLog(@"checkingResult--%@",checkingResult);
    
    //遍历数组., 获取匹配成功的字符串的范围 NSRange (因为替换后, 字符串的长度在改变,所以使用倒序来进行替换,来避免范围越界问题)
    for (NSInteger i = checkingResult.count-1  ; i

你可能感兴趣的:(正则表达式)