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 回答