http://blog.sina.com.cn/s/blog_71715bf8010165t0.html
准备工作,下载RegexKitLite
然后还要加载framework
基本使用的例子(更多信息参看
1.
- NSString
*searchString = @ "This is neat." ; - NSString
*regexString = @"(//w+)//s+(//w+)//s+(//w+)" ; - NSRange
matchedRange = NSMakeRange(NSNotFound, 0UL); - NSError
*error = NULL; - matchedRange
= [searchString rangeOfRegex:regexString options:RKLNoOptions inRange:searchRange capture:2L error:&error]; - NSLog(@"matchedRange:
%@" , NSStringFromRange(matchedRange)); - //
2008-03-18 03:51:16.530 test[51583:813] matchedRange: {5, 2},//匹配到‘is‘ - NSString
*matchedString = [searchString substringWithRange:matchedRange]; - NSLog(@"matchedString:
'%@'" , matchedString); - //
2008-03-18 03:51:16.532 test[51583:813] matchedString: 'is' //生成子字符串
- NSString
*searchString = @"This is neat."; - NSString
*regexString = @"(//w+)//s+(//w+)//s+(//w+)"; - NSRange
matchedRange = NSMakeRange(NSNotFound, 0UL); - NSError
*error = NULL; - matchedRange
= [searchString rangeOfRegex:regexString options:RKLNoOptions inRange:searchRange capture:2L error:&error]; - NSLog(@"matchedRange:
%@", NSStringFromRange(matchedRange)); - //
2008-03-18 03:51:16.530 test[51583:813] matchedRange: {5, 2},//匹配到‘is‘ - NSString
*matchedString = [searchString substringWithRange:matchedRange]; - NSLog(@"matchedString:
'%@'", matchedString); - //
2008-03-18 03:51:16.532 test[51583:813] matchedString: 'is' //生成子字符串
2.找到第一个匹配并返回一个NSString
- NSString
*searchString = @ "This is neat." ; - NSString
*regexString = @"(//w+)//s+(//w+)//s+(//w+)" ; - NSString
*matchedString = [searchString stringByMatching:regexString capture:2L]; - NSLog(@"matchedString:
'%@'" , matchedString); - //
2008-03-18 03:53:42.949 test[51583:813] matchedString: 'is'
- NSString
*searchString = @"This is neat."; - NSString
*regexString = @"(//w+)//s+(//w+)//s+(//w+)"; - NSString
*matchedString = [searchString stringByMatching:regexString capture:2L]; - NSLog(@"matchedString:
'%@'", matchedString); - //
2008-03-18 03:53:42.949 test[51583:813] matchedString: 'is'
3.查找和替换,加括号和概念和Python中的一样,$1指代第一个括号中的内容
- NSString
*searchString = @ "This is neat." ; - NSString
*regexString = @"//b(//w+)//b" ; - NSString
*replaceWithString = @"{$1}" ; - NSString
*replacedString = NULL; - replacedString
= [searchString stringByReplacingOccurre ncesOfRegex:regexString withString:replaceWithString]; - //NSMutableString可以直接替换,并返回替换的次数
- NSLog(@"replaced
string: '%@'" , replacedString); - //
2008-07-01 19:03:03.195 test[68775:813] replaced string: '{This} {is} {neat}.' - NSMutableString
*mutableString = [NSMutableString stringWithString:@"This is neat." ]; - NSString
*regexString = @"//b(//w+)//b" ; - NSString
*replaceWithString = @"{$1}" ; - NSUInteger
replacedCount = 0UL; - replacedCount
= [mutableString replaceOccurrencesOfRege x:regexString withString:replaceWithString]; - NSLog(@"count:
%lu string: '%@'" , (u_long)replacedCount, mutableString); - //
2008-07-01 21:25:43.433 test[69689:813] count: 3 string: '{This} {is} {neat}.'
- NSString
*searchString = @"This is neat."; - NSString
*regexString = @"//b(//w+)//b"; - NSString
*replaceWithString = @"{$1}"; - NSString
*replacedString = NULL; - replacedString
= [searchString stringByReplacingOccurre ncesOfRegex:regexString withString:replaceWithString]; - //NSMutableString可以直接替换,并返回替换的次数
- NSLog(@"replaced
string: '%@'", replacedString); - //
2008-07-01 19:03:03.195 test[68775:813] replaced string: '{This} {is} {neat}.' - NSMutableString
*mutableString = [NSMutableString stringWithString:@"This is neat."]; - NSString
*regexString = @"//b(//w+)//b"; - NSString
*replaceWithString = @"{$1}"; - NSUInteger
replacedCount = 0UL; - replacedCount
= [mutableString replaceOccurrencesOfRege x:regexString withString:replaceWithString]; - NSLog(@"count:
%lu string: '%@'", (u_long)replacedCount, mutableString); - //
2008-07-01 21:25:43.433 test[69689:813] count: 3 string: '{This} {is} {neat}.'
4.用于拆分,返回一个拆分后的字符串数组
- NSString
*searchString = @ "This is neat." ; - NSString
*regexString = @"//s+" ; - NSArray
*splitArray = NULL; - splitArray
= [searchString componentsSeparatedByReg ex:regexString]; - //
splitArray == { @"This", @"is", @"neat." } - NSLog(@"splitArray:
%@" , splitArray);
- NSString
*searchString = @"This is neat."; - NSString
*regexString = @"//s+"; - NSArray
*splitArray = NULL; - splitArray
= [searchString componentsSeparatedByReg ex:regexString]; - //
splitArray == { @"This", @"is", @"neat." } - NSLog(@"splitArray:
%@", splitArray);
5.返回所有匹配的字符串数组,这个例子中虽然有多个括号,但是
- NSString
*searchString = @ "$10.23, $1024.42, $3099" ; - NSString
*regexString = @"//$((//d+)(?://.(//d+)|//.?))" ; - NSArray
*matchArray = NULL; - matchArray
= [searchString componentsMatchedByRegex :regexString]; - //
matchArray == { @"$10.23", @"$1024.42", @"$3099" }; - NSLog(@"matchArray:
%@" , matchArray); - 6.返回所有匹配的字符串数组处理所有的括号
- NSString
*searchString = @"$10.23, $1024.42, $3099" ; - NSString
*regexString = @"//$((//d+)(?://.(//d+)|//.?))" ; - NSArray
*capturesArray = NULL; - capturesArray
= [searchString arrayOfCaptureComponents MatchedByRegex:regexString]; -
- NSLog(@"capturesArray:
%@" , capturesArray); - 输出结果:
- shell%
./capturesArray↵ - 2009-05-06
03:25:46.852 capturesArray[69981:10b] capturesArray: ( -
( -
"$10.23" , -
"10.23" , -
10, -
23 -
), -
( -
"$1024.42" , -
"1024.42" , -
1024, -
42 -
), -
( -
"$3099" , -
3099, -
3099, -
"" -
) - )
- NSString
*searchString = @"$10.23, $1024.42, $3099"; - NSString
*regexString = @"//$((//d+)(?://.(//d+)|//.?))"; - NSArray
*matchArray = NULL; - matchArray
= [searchString componentsMatchedByRegex :regexString]; - //
matchArray == { @"$10.23", @"$1024.42", @"$3099" }; - NSLog(@"matchArray:
%@", matchArray); - 6.返回所有匹配的字符串数组处理所有的括号
- NSString
*searchString = @"$10.23, $1024.42, $3099"; - NSString
*regexString = @"//$((//d+)(?://.(//d+)|//.?))"; - NSArray
*capturesArray = NULL; - capturesArray
= [searchString arrayOfCaptureComponents MatchedByRegex:regexString]; -
- NSLog(@"capturesArray:
%@", capturesArray); - 输出结果:
- shell%
./capturesArray↵ - 2009-05-06
03:25:46.852 capturesArray[69981:10b] capturesArray: ( -
( -
"$10.23", -
"10.23", -
10, -
23 -
), -
( -
"$1024.42", -
"1024.42", -
1024, -
42 -
), -
( -
"$3099", -
3099, -
3099, -
"" -
) - )