我正在努力理解一些正则表达式,以匹配一些日期格式。理想情况下,我希望一个表达式,以匹配每个日期格式可能,我正在搜索的所有电子邮件中的所有日期与主体。
格式,例如:
Wednesday, 6 November 2013
Weds 6th November 2013
Weds 6th Nov 2013
06/11/2013
11/06/2013
06/11/13
11/06/13
6th Nov 2013
6th November 2013有没有人知道我能用到的all in one表达式?
发布于 2013-07-06 22:15:57
多亏了Wain的回答,我正在使用这段代码而不是NSRegularExpression来查找字符串中的日期,希望它能帮助任何有类似问题的人。
NSError *error = NULL;
NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:(NSTextCheckingTypes)NSTextCheckingTypeDate error:&error];
NSArray *matches = [detector matchesInString:string
options:0
range:NSMakeRange(0, [string length])];
for (NSTextCheckingResult *match in matches) {
if ([match resultType] == NSTextCheckingTypeDate) {
NSDate *date = [match date];
NSDateFormatter *formatter;
NSString *dateString;
formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"dd-MM-yyyy HH:mm"];
dateString = [formatter stringFromDate:date];
NSLog(@"Date: %@",dateString);
}
}发布于 2013-07-06 21:17:04
考虑使用可配置为扫描日期(NSTextCheckingTypeDate)的NSDataDetector。Docs here。
发布于 2015-05-07 15:38:58
你可以用几个字符串编写正则表达式
此外,您还可以在http://regexpal.com中测试正则表达式,这与在表达式中删除\有所不同,例如(\d{2})(./-)(\d{2})(./-)(\d{2,4})
NSError *error = NULL;
NSString *expForSlash = @"(\\d{2})((\/)|(\.))(\\d{2})((\/)|(\.))(\\d{4}|\\d{2})";
NSString *expMonthStrNew = @"(Jan|Feb|Mar(ch)?|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)(\\s?)(\\d{2}|\\d{1})(\,?)(\\s?)(\\d{4}|\\d{2})";
NSString *expForreg = [NSString stringWithFormat:@"%@|%@", expForSlash, expMonthStrNew];//@"(May|Jun)(\\s?)(\\d{2})(\,?)(\\s?)(\\d{4})";
NSRegularExpression *regex = [NSRegularExpression
regularExpressionWithPattern:expForreg
options:NSRegularExpressionCaseInsensitive
error:&error];
NSArray *matches = [regex matchesInString:tesText options:0 range:NSMakeRange(0, [tesText length])];https://stackoverflow.com/questions/17503215
复制相似问题