知识点详解iOS学习iOS Developer

正则表达式Regular Expression

2017-01-11  本文已影响71人  张不二01

1,正则表达式的基本使用:

//1.1,创建一个正则表达式对象:定义规则
NSString *pattern = @"[0-9]";
NSRegularExpression *regularExp = [[NSRegularExpression alloc] initWithPattern:pattern options:0 error:nil];

//1.2,利用对象进行判断(test是你要从中查找的字符串)
NSArray *results = [regularExp matchesInString:test options:0 range:NSMakeRange(0, test.length)];

//2,输出结果,注意遍历的时候里面的子类是:NSTextCheckingResultfor 
for (NSTextCheckingResult *result in results) { 
    NSLog(@"%@,%@",NSStringFromRange(result.range),[test substringWithRange:result.range]);
}

2,正则表达式的规则:

3,正则表达式几种常见应用场景:

NSString *pattern = @"^[1-9]\\d{4,10}$";
NSString *pattern = @"^1[3578]\\d{9}$";
NSString *pattern = @“((?:(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d))))”;
NSString *pattern = @"[\\u4e00-\\u9fa5]";
NSString *pattern = @"(http|ftp|https):\\/\\/[\\w\\-_]+(\\.[\\w\\-_]+)+([\\w\\-\\.,@?^=%&:/~\\+#]*[\\w\\-\\@?^=%&/~\\+#])?";

4,取出正则表达式中匹配的内容并解析:

NSString *test = @"jack13412rosee3323fdf543589dkkd";

//1,正则表达式的使用:
//1.1,创建一个正则表达式对象:定义规则
NSString *pattern = @"[a-zA-Z]+";
NSRegularExpression *regularExp = [[NSRegularExpression alloc] initWithPattern:pattern options:0 error:nil];
//1.2,利用对象进行判断
NSArray *results = [regularExp matchesInString:test options:0 range:NSMakeRange(0, test.length)];

//2,输出结果,注意遍历的时候里面的子类是:NSTextCheckingResult
for (NSTextCheckingResult *result in results) {
    NSLog(@"%@,%@",NSStringFromRange(result.range),[test substringWithRange:result.range]);
}

5,匹配#,@和[]内容

//即将到来的秀恩爱高峰期[拜拜]@搞笑补习班即将到来的秀恩爱高峰期[拜拜]
NSString *test = @"即[abvc]将到来的秀恩爱高峰期[拜拜]@搞笑补习班:即将到http://c.biancheng.net/cpp/html/1435.html 来的秀恩爱高峰期[拜拜]#hahahaha# http://c.biancheng.net/cpp/html/1435.html";

//1,正则表达式的使用:
//1.1,创建一个正则表达式对象:定义规则
NSString *pattern = @"\\[[a-zA-Z\\u4e00-\\u9fa5]+\\]";
NSRegularExpression *regularExp = [[NSRegularExpression alloc] initWithPattern:pattern options:0 error:nil];

//1.2,利用对象进行判断
NSArray *results = [regularExp matchesInString:test options:0 range:NSMakeRange(0, test.length)];

for (NSTextCheckingResult *result in results) {
    NSLog(@"--000%@,%@",NSStringFromRange(result.range),[test substringWithRange:result.range]);
}
//1,正则表达式的使用:
//1.1,创建一个正则表达式对象:定义规则
NSString *pattern01 = @"\\#[a-zA-Z\\u4e00-\\u9fa5]+\\#";
NSRegularExpression *regularExp01 = [[NSRegularExpression alloc] initWithPattern:pattern01 options:0 error:nil];

//1.2,利用对象进行判断
NSArray *results01 = [regularExp01 matchesInString:test options:0 range:NSMakeRange(0, test.length)];

for (NSTextCheckingResult *result in results01) {
    NSLog(@"--001%@,%@",NSStringFromRange(result.range),[test substringWithRange:result.range]);
}
//1,正则表达式的使用:
//1.1,创建一个正则表达式对象:定义规则
NSString *pattern02 = @"\\@[0-9A-Za-z\\u4e00-\\u9fa5]+";
NSRegularExpression *regularExp02 = [[NSRegularExpression alloc] initWithPattern:pattern02 options:0 error:nil];

//1.2,利用对象进行判断
NSArray *results02 = [regularExp02 matchesInString:test options:0 range:NSMakeRange(0, test.length)];

for (NSTextCheckingResult *result in results02) {
    NSLog(@"--002%@,%@",NSStringFromRange(result.range),[test substringWithRange:result.range]);
}
//1,正则表达式的使用:
//1.1,创建一个正则表达式对象:定义规则
NSString *pattern03 = @"(http|ftp|https):\\/\\/[\\w\\-_]+(\\.[\\w\\-_]+)+([\\w\\-\\.,@?^=%&:/~\\+#]*[\\w\\-\\@?^=%&/~\\+#])?";
NSRegularExpression *regularExp03 = [[NSRegularExpression alloc] initWithPattern:pattern03 options:0 error:nil];

//1.2,利用对象进行判断
NSArray *results03 = [regularExp03 matchesInString:test options:0 range:NSMakeRange(0, test.length)];

for (NSTextCheckingResult *result in results03) {
    NSLog(@"--002%@,%@",NSStringFromRange(result.range),[test substringWithRange:result.range]);
}

6,第三方框架RegexKitLite:

Snip20170111_19.png
NSString *str = @"即[][abvc]将到来的#秀恩爱#高峰期[拜拜]@搞笑补习班:即将到http://c.biancheng.net/cpp/html/1435.html 来的秀恩爱高峰期[拜拜]#hahahaha# http://c.biancheng.net/cpp/html/1435.html";
//找出表情内容,如[拜拜]
NSString *emoPattern = @"\\[[a-zA-Z\\u4e00-\\u9fa5]+\\]";
NSArray *enoResults = [str componentsMatchedByRegex:emoPattern];
NSLog(@"表情内容是---%@",enoResults);
//找出@内容,如@搞笑补习班
NSString *atPattern = @"\\@[a-zA-Z\\u4e00-\\u9fa5]+";
NSArray *atResults = [str componentsMatchedByRegex:atPattern];
NSLog(@"@内容是---%@",atResults);
//找出@话题内容,如#秀恩爱#
NSString *topicPattern = @"\\#[a-zA-Z\\u4e00-\\u9fa5]+\\#";
NSArray *topicArray = [str componentsMatchedByRegex:topicPattern];
NSLog(@"热门话题的内容是---%@",topicArray);
NSString *str = @"即[][abvc]将到来的#秀恩爱#高峰期[拜拜]@搞笑补习班:即将到http://c.biancheng.net/cpp/html/1435.html 来的秀恩爱高峰期[拜拜dd]#hahahaha# http://c.biancheng.net/cpp/html/1435.html";
//找出表情内容,如[拜拜]
NSString *emoPattern = @"\\[[a-zA-Z\\u4e00-\\u9fa5]+\\]";
//找出@内容,如@搞笑补习班
NSString *atPattern = @"\\@[a-zA-Z\\u4e00-\\u9fa5]+";
//找出@话题内容,如#秀恩爱#
NSString *topicPattern = @"\\#[a-zA-Z\\u4e00-\\u9fa5]+\\#";
//这里直接把三个查找的对象合并一下一下子全部输出了就不在一一输出了
NSString *pattern = [NSString stringWithFormat:@"%@|%@|%@",emoPattern, atPattern,topicPattern];
[str enumerateStringsMatchedByRegex:pattern usingBlock:^(NSInteger captureCount, NSString *const __unsafe_unretained *capturedStrings, const NSRange *capturedRanges, volatile BOOL *const stop) {
    NSLog(@"range:%@, str:%@",NSStringFromRange(*capturedRanges), *capturedStrings);
}];
NSString *str = @"即[][abvc]将到来的#秀恩爱#高峰期[拜拜]@搞笑补习班:即将到http://c.biancheng.net/cpp/html/1435.html 来的秀恩爱高峰期[拜拜dd]#hahahaha# http://c.biancheng.net/cpp/html/1435.html";
//找出表情内容,如[拜拜]
NSString *emoPattern = @"\\[[a-zA-Z\\u4e00-\\u9fa5]+\\]";
//找出@内容,如@搞笑补习班
NSString *atPattern = @"\\@[a-zA-Z\\u4e00-\\u9fa5]+";
//找出@话题内容,如#秀恩爱#
NSString *topicPattern = @"\\#[a-zA-Z\\u4e00-\\u9fa5]+\\#";
//这里直接把三个查找的对象合并一下一下子全部输出了就不在一一输出了,只有这里的方法和正向查找不同,注意分辨
NSString *pattern = [NSString stringWithFormat:@"%@|%@|%@",emoPattern, atPattern,topicPattern];
[str enumerateStringsSeparatedByRegex:pattern usingBlock:^(NSInteger captureCount, NSString *const __unsafe_unretained *capturedStrings, const NSRange *capturedRanges, volatile BOOL *const stop) {
    NSLog(@"range:%@, str:%@",NSStringFromRange(*capturedRanges), *capturedStrings);
}];
上一篇 下一篇

猜你喜欢

热点阅读