0

我想做类似于这个问题的事情:regular expression in ruby​​ for strings with multiple patterns

但我想做Objective-C。基本上我想从一个带有日期和时间的字符串中提取日期和时间@

例如我有一个字符串: Feed the Rabbits @12,我想在 之后提取日期和时间,问题是字符串可以变化,@例如它可以@12:00是 、@04/02/12、或只是。这是我当前从字符串中提取数字的代码(它不检测“/”或“:”,所以如果字符串是它只会提取,因为它在“/”处停止)。@04/02/12 12:00@04/02/12 12:00@04/02/12@04/02/12@04

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

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 @"";
}
4

1 回答 1

1

正则表达式 "@(\d+)" 找到一个 "@" 后跟一个或多个数字(并且只捕获数字)。如果您希望它查找数字和斜线、破折号、冒号等,则需要将它们包含在正则表达式中。如果要查找特定的数字和标点符号模式,则需要多个用“或”(即|字符)连接的子表达式。

预测所有可能的方式来表达日期和/或时间是一项艰巨的工作,特别是如果您想支持多个语言环境。您可能会发现让您的正则表达式捕获“@”之后的任何内容更可行(如果您不确定如何执行此操作,NSRegularExpression文档应该会有所帮助)。然后您可以将字符串传递给NSDateFormatter以解析为日期。

于 2012-05-12T05:24:59.863 回答