加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式-04 实际应用

发布时间:2020-12-14 01:24:50 所属栏目:百科 来源:网络整理
导读:正则表达式在实际开发中,常常是为了获取文本中的一些信息,比如邮箱地址,手机号码,http网址之类的截取需求. 假设现在手机上有一条这样的信息,如果我想拨打电话给信息显示里面告知的手机号码,如果手机没有给我们讲号码处理出来,那么我们可能就需要先将号码抄下

正则表达式在实际开发中,常常是为了获取文本中的一些信息,比如邮箱地址,手机号码,http网址之类的截取需求.
假设现在手机上有一条这样的信息,如果我想拨打电话给信息显示里面告知的手机号码,如果手机没有给我们讲号码处理出来,那么我们可能就需要先将号码抄下,再拨号出去,这样显得客户体验不好,所以正则表达式就派上用场了.

博文代码(点击下载)

代码:

int main(int argc,const char * argv[]) {
    @autoreleasepool {
        NSString* message = @"你好,我的手机号码是13800138000,请登录网址http://www.housnk.com向我发一条询价邮件,我的邮箱是housnk@housnk.com";

        NSString* pattern = @"1[3578]d{9}";

        NSError* error = [[NSError alloc]init];

        NSRegularExpression* regularExpression = [NSRegularExpression regularExpressionWithPattern:pattern options:NSRegularExpressionCaseInsensitive error:&error];

        NSArray* resultArray = [regularExpression matchesInString:message options:NSMatchingReportCompletion range:NSMakeRange(0,message.length)];

        if(resultArray.count){
            for (NSTextCheckingResult* result in resultArray) {
                NSLog(@"%@",[message substringWithRange:result.range]);
            }
        }else{
            NSLog(@"检索无结果");
        }
    }
    return 0;
}

运行结果:

RegularExpression04[3443:303] 13800138000

@”1[3578]d{9}”这个检索规则的意思是,以1开头,接着第二个字符是”3”,”5”,”7”,”8”中的一个,然后就是9位数字,这样就组成手机号码了.

现在我想要登录www.housnk.com这个网站了,同样最好就是用正则表达式处理出来.
代码:

int main(int argc,我的邮箱是housnk@housnk.com";

// NSString* pattern = @"1[3578]d{9}";
        NSString* pattern = @"http(s://|://)?(|www).w{2,}.(cn|com|org|net)";

        NSError* error = [[NSError alloc]init];

        NSRegularExpression* regularExpression = [NSRegularExpression regularExpressionWithPattern:pattern options:NSRegularExpressionCaseInsensitive error:&error];

        NSArray* resultArray = [regularExpression matchesInString:message options:NSMatchingReportCompletion range:NSMakeRange(0,[message substringWithRange:result.range]);
            }
        }else{
            NSLog(@"检索无结果");
        }
    }
    return 0;
}

运行结果:

RegularExpression04[3580:303] http://www.housnk.com

其实上述的规则还不是很严谨,如果是实际的地址,可能是http: //www.housnk.com/login/user这样的网址,所以不是很严谨,所以我们只要匹配以http或者https和www开头的网址,不以汉字为结尾的规则就可以了,

代码示例:

int main(int argc,我的邮箱是housnk@housnk.com";

// NSString* pattern = @"1[3578]d{9}";
// NSString* pattern = @"http(s://|://)?(|www).w{2,}.(cn|com|org|net)";
        NSString* pattern = @"http(s://|://)?(|www).[^u4e00-u9fa5]{2,}";

        NSError* error = [[NSError alloc]init];

        NSRegularExpression* regularExpression = [NSRegularExpression regularExpressionWithPattern:pattern options:NSRegularExpressionCaseInsensitive error:&error];

        NSArray* resultArray = [regularExpression matchesInString:message options:NSMatchingReportCompletion range:NSMakeRange(0,[message substringWithRange:result.range]);
            }
        }else{
            NSLog(@"检索无结果");
        }
    }
    return 0;
}

运行结果:

RegularExpression04[836:303] http://www.housnk.com

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读