在NSString中使用Regex查找date和时间

我想要做类似于这个问题的东西: Ruby中的正则expression式用于具有多种模式的string

但是我想要做Objective-C 。 基本上我希望从@符号后的date和时间string中提取date和时间。

例如我有一个string: Feed the Rabbits @12 ,我想提取date和时间后,问题是,string可以改变,例如它可以@12:00@04/02/12@04/02/12 12:00@04/02/12 12:00或者@04/02/12 。 inheritance人我现在的代码从string中提取数字(它不检测“/”或“:”,所以如果string是@04/02/12只会提取@04因为它停在“/”)。

我也可以使用这个RegEx模式@([0-9]+:[0-9][0-9])提取@12:00部分。

 NSString *regEx = @"@(\\d+)"; NSString *dateString; r = [inputString rangeOfString:regEx options:NSRegularExpressionSearch]; if (r.location != NSNotFound) { dateString = [NSString stringWithFormat:@"%@",[inputString substringWithRange:r]]; return dateString; } else { return @""; } 

正则expression式“@(\ d +)”find一个“@”后跟一个或多个数字(仅捕获数字)。 如果你想find数字和斜杠,破折号,冒号等,你需要包括在正则expression式中。 如果你想查找数字和标点符号的特定模式,你将需要多个用“或”(即|字符)连接的子expression式。

预测所有expressiondate和/或时间的可能方法是很困难的,特别是如果你想支持多个地区。 你可能会发现使用正则expression式捕获“@”之后的所有东西(如果不确定如何做, NSRegularExpression文档应该会有所帮助)更为可行。 然后,您可以将string传递给NSDateFormatterparsing为一个date。