0

この質問に似たようなことをしたい:複数のパターンを持つ文字列に対するルビーの正規表現

でもやりたい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 pattern を使用して部分を抽出することもできます@([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+)" は、"@" の後に 1 つ以上の数字が続くものを検索します (数字のみをキャプチャします)。数字、スラッシュ、ダッシュ、コロンなどを検索する場合は、それらを正規表現に含める必要があります。数字と句読点の特定のパターンを探したい場合は、「または」(つまり、|文字) で接続された複数の部分式が必要になります。

日付や時刻を表現するために考えられるすべての方法を予測することは、特に複数のロケールをサポートしたい場合は大変です。正規表現で「@」以降のあらゆるものをキャプチャする方が実行可能であることがわかる場合があります (これを行う方法がわからない場合は、NSRegularExpressionのドキュメントが役立つはずです)。次に、日付として解析するために文字列をNSDateFormatterに渡すことができます。

于 2012-05-12T05:24:59.863 に答える