Поиск даты и времени в NSString с помощью Regex
Я хочу сделать что-то похожее на этот вопрос: регулярное выражение в ruby для строк с несколькими шаблонами
Но я хочу сделать это 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 @"";
}
1 ответ
Регулярное выражение "@(\d+)" находит "@", за которым следуют одна или несколько цифр (и фиксирует только цифры). Если вы хотите, чтобы он находил цифры и косые черты, тире, двоеточия и т. Д., Вам необходимо включить их в регулярное выражение. Если вы хотите искать конкретные шаблоны чисел и знаков препинания, вам понадобится несколько подвыражений, связанных с "или" (то есть |
персонаж).
Предвидеть все возможные способы выражения даты и / или времени - тяжелая работа, особенно если вы хотите поддерживать несколько локалей. Возможно, вам будет удобнее, чтобы ваше регулярное выражение захватывало что-нибудь и все после "@" (если вы не уверены, как это сделать, документы NSRegularExpression должны быть полезны). Затем вы можете передать строку в NSDateFormatter для анализа в качестве даты.