NSRegularExpression不匹配

时间:2012-01-20 16:12:43

标签: objective-c regex nsregularexpression

我正在为以下行创建一个正则表达式:

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

我确信所选行会在某个时刻出现,因为我在代码中打印了所有行...

2 个答案:

答案 0 :(得分:3)

您的正则表达式与您的字符串匹配。在此online matcher中尝试一下。

问题是您传递的选项:NSRegularExpressionAllowCommentsAndWhitespace导致匹配忽略空格,#符号加上正则表达式中#后面的任何内容,这是您不想要的。为选项传递零。

答案 1 :(得分:2)

您的问题出在您正在使用的选项中。从NSRegularExpression Class Reference开始,NSRegularExpressionAllowCommentsAndWhitespace表示将忽略正则表达式中#之后的空格和任何内容。启用该选项后,正则表达式的行为如下:

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];