我正在为以下行创建一个正则表达式:
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
我确信所选行会在某个时刻出现,因为我在代码中打印了所有行...
答案 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];