后台返回这样的字段
{"time": "2016-05-29 15:45:42",
"context": "快件到达【嘉兴南湖集散中心】",
"ftime": "2016-05-29 15:45:42"
},
{
"time": "2016-05-29 11:01:14",
"context": "快件在【杭州中转站】,正转运至下一站",
"ftime": "2016-05-29 11:01:14"
},
{
"time": "2016-05-30 08:04:15",
"context": "正在派送途中,请您准备签收 (派件人:吴进明,电话:18069826220)",
"ftime": "2016-05-30 08:04:15"
}
1>这样的数据我们要知道是可以筛选出电话号码和诸如"杭州中转站"的地点 ;
2>对于电话号码,比较简单的做法就是用TTTLabel来实现.如果用xib关联TTTlabel的话一定要注意给label赋值的顺序;
3>对于杭州中转站 这类的字眼 ,我们要想到正则表达式来取出括号内的地点.
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
NSString *str = @"@huohuo12:【动物尖叫合辑】#肥猪流#猫头鹰这么尖叫[偷笑]、@船长: 老鼠这么尖叫、兔子这么尖叫[吃惊]、@花满楼: 莫名奇#小笼包#妙的笑到最后[好爱哦]!~ http://www.jianshu.com 电话: 17334332342。【动辑】";
// 1.匹配@名字:
// NSString *pattern = @"@.*?:";
// 2.匹配URL
// NSString *pattern = @"http(s)?://([\\w-]+\\.)+[\\w-]+(/[\\w- ./?%&=]*)?";
// 3.匹配话题 #....#
NSString *pattern = @"#.*?#";
// 4. 【】
// NSString *pattern = @"【.*?】";
// 5.手机号码匹配
// NSString *pattern = @"1[3578]\\d{9}$";
NSError *error = nil;
/*
typedef NS_OPTIONS(NSUInteger, NSRegularExpressionOptions) {
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标准作为词的边界,否则所有传统正则表达式的词边界都有效
};
*/
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:pattern options:NSRegularExpressionCaseInsensitive error:&error];
NSArray<NSTextCheckingResult *> *result = [regex matchesInString:str options:0 range:NSMakeRange(0, str.length)];
if (result) {
for (int i = 0; i<result.count; i++) {
NSTextCheckingResult *res = result[i];
NSLog(@"str == %@", [str substringWithRange:res.range]);
}
}else{
NSLog(@"error == %@",error.description);
}
}