给大家来个简单的正则表达式操作
正则表达式匹配规则:http://www.runoob.com/regexp/regexp-syntax.html
正则表达式文章(如果想深究):http://deerchao.net/tutorials/regex/regex.htm
ps:正则表达式记不住也没关系,百度一下常用的正则表达式,一般都有 **如果经常用还是记住的好**.
+++***+++一般代码都一样,需要修改的也就是 匹配规则 和 需要匹配的字符串+++***+++
具体语法:
1. 创建正则表达式对象
// 1.1 设置匹配规则++++++++++不懂规则语法点击上面链接+++++++++++
NSString *pattern = @"a.*?c";// 匹配方案 @"a(.*?)c"
// 1.2 设置匹配字符串的处理模式 ===>下面的options
/*
NSRegularExpressionCaseInsensitive = 1 << 0, // 不区分大小写字母模式
NSRegularExpressionAllowCommentsAndWhitespace = 1 << 1, // 忽略掉正则表达式中的空格和#号之后的字符
NSRegularExpressionIgnoreMetacharacters = 1 << 2, // 将正则表达式整体作为字符串处理
NSRegularExpressionDotMatchesLineSeparators = 1 << 3, // 允许.匹配任何字符,包括换行符
NSRegularExpressionAnchorsMatchLines = 1 << 4, // 允许^和$符号匹配行的开头和结尾
NSRegularExpressionUseUnixLineSeparators = 1 << 5, // 设置\n为唯一的行分隔符,否则所有的都有效。
NSRegularExpressionUseUnicodeWordBoundaries = 1 << 6 // /使用Unicode TR#29标准作为词的边界,否则所有传统正则表达式的词边界都有效
*/
// 1.3 创建正则表达式对象
NSRegularExpression *regex = [NSRegularExpression
regularExpressionWithPattern:pattern
options:NSRegularExpressionCaseInsensitive
error:nil];
2. 开始匹配字符串
// 2.1 设置需要匹配字符串
NSString *matchString = @"dsampoewaf";
// 2.2 设置进行匹配时的参数===>下面的options
/*
NSMatchingReportProgress = 1 << 0, // 找到最长的匹配字符串后调用block回调
NSMatchingReportCompletion = 1 << 1, // 找到任何一个匹配串后都回调一次block
NSMatchingAnchored = 1 << 2, // 从匹配范围的开始进行极限匹配
NSMatchingWithTransparentBounds = 1 << 3, // 允许匹配的范围超出设置的范围
NSMatchingWithoutAnchoringBounds = 1 << 4 // 禁止^和$自动匹配行开始和结束
*/
// 2.3 设置匹配字符串的范围
NSRange range = NSMakeRange(0, matchString.length);
// 2.4 开始匹配
NSArray<NSTextCheckingResult *> *textCheckingResults = [regex matchesInString:matchString
options:NSMatchingReportProgress
range:range];
3. 处理匹配的结果(根据正则表达式,获取到的结果)
for (NSTextCheckingResult *result in textCheckingResults) {
NSLog(@"textCheckingResults:%@",[matchString substringWithRange:result.range]);
}
4.匹配时,有哪些字符串
NSTextCheckingResult *matchResult = [regex firstMatchInString:matchString options:NSMatchingReportProgress range:range];
for (int i=0; i<matchResult.numberOfRanges; i++) {
NSLog(@"匹配到的字符串:%@",[matchString substringWithRange:[matchResult rangeAtIndex:i]]);
}
打印结果如字符串:@"http://www.jianshu.com/p/924a4a632bb9000"
匹配规则:@"http://w(.?)w.jianshu.com/p/924a(.?)32bb9"
网友评论