2

次の行の正規表現を作成しています。

Table 'Joella VIII' 6-max Seat #4 is the button

これまでのところ、私はこれを持っています:

self.tableDetailsRegex = [NSRegularExpression regularExpressionWithPattern:@"Table '[A-Za-z0-9 ]*' [0-9]+-max Seat #[0-9]+ is the button" options:NSRegularExpressionAllowCommentsAndWhitespace error:nil];

if([self.tableDetailsRegex numberOfMatchesInString:line options:NSMatchingReportCompletion range:NSMakeRange(0, line.length)] == 1)
{
    NSLog(@"%@", line);
}

したがって、私の正規表現は次のとおりです。

Table '[A-Za-z0-9 ]*' [0-9]+-max Seat #[0-9]+ is the button

そして、コード内ですべての行をもう少し印刷しているので、選択した行がある時点で来ると確信しています...

4

2 に答える 2

3

正規表現は文字列と一致します。このオンラインマッチャーで試してみてください。

問題は、渡すオプションです。NSRegularExpressionAllowCommentsAndWhitespaceを使用すると、一致で空白と#記号に加えて、正規表現の#に続く不要なものが無視されます。オプションにゼロを渡します。

于 2012-01-20T16:25:45.663 に答える
2

問題は、使用しているオプションにあります。NSRegularExpression Class Referenceから、空白NSRegularExpressionAllowCommentsAndWhitespace#正規表現の a の後のものはすべて無視されることを意味します。このオプションを有効にすると、正規表現は次のように動作します。

Table'[A-Za-z0-9]*'[0-9]+-maxSeat

おそらく、オプションに 0 を渡して、それらのどれも有効にならないようにしたいと思うでしょう。

self.tableDetailsRegex = [NSRegularExpression regularExpressionWithPattern:@"Table '[A-Za-z0-9 ]*' [0-9]+-max Seat #[0-9]+ is the button" options:0 error:nil];
于 2012-01-20T16:25:25.180 に答える