最近在学习正则表达式,一直想写一篇关于正则表达式的博客,但是自己一直懒,一直拖,一直都没有写,趁着十一放假清闲,总结一下OC中的正则表达式的基本用法,正则表达式在对字符串进行处理的时候帮助很大。正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。总结一下OC中的正则表达式的使用吧。
/**
使用正则表达式的步骤:
1.创建一个正则表达式对象:定义规则
2.利用正则表达式对象 来测试 相应的字符串
*/
// Pattern : 样式\规则
// NSString *pattern = @"ab7";
// [] : 找到内部的某一个字符即可
// NSString *pattern = @"[0123456789]";
// NSString *pattern = @"[0-9]";
// NSString *pattern = @"[a-zA-Z0-9]";
// NSString *pattern = @"[0-9][0-9]";
// NSString *pattern = @"\\d\\d\\d";
// NSString *pattern = @"\\d{2,4}";
// ? + *
// ? : 0个或者1个
// + : 至少1个
// * : 0个或者多个
NSString *username = @"6gjssdfkhdjkhgkjh7";
// 1.创建正则表达式
NSString *pattern = @"^\\d.*\\d$"; // 以数字开头并且以数字结尾
NSRegularExpression *regex = [[NSRegularExpression alloc] initWithPattern:pattern options:0 error:nil];
// 2.测试字符串
NSArray *results = [regex matchesInString:username options:0 range:NSMakeRange(0, username.length)]; // 查找整个字符串,返回值是数组,数组中存放的是符合条件的字符串
匹配多个条件的正则表达式
// 表情的规则
NSString *emotionPattern = @"\\[[0-9a-zA-Z\\u4e00-\\u9fa5]+\\]";
// @的规则
NSString *atPattern = @"@[0-9a-zA-Z\\u4e00-\\u9fa5]+";
// #话题#的规则
NSString *topicPattern = @"#[0-9a-zA-Z\\u4e00-\\u9fa5]+#";
// url链接的规则
NSString *urlPattern = @"\\b(([\\w-]+://?|www[.])[^\\s()<>]+(?:\\([\\w\\d]+\\)|([^[:punct:]\\s]|/)))";
// | 匹配多个条件,相当于or\或
NSString *pattern = [NSString stringWithFormat:@"%@|%@|%@|%@", emotionPattern, atPattern, topicPattern, urlPattern];
NSRegularExpression *regex = [[NSRegularExpression alloc] initWithPattern:pattern options:0 error:nil];
// 2.测试字符串
NSArray *results = [regex matchesInString:testStr options:0 range:NSMakeRange(0, testStr.length)];
关于正则表达式常用的匹配条件:
常用的正则表达式的匹配条件请自行百度。