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
我确信所选行会在某个时刻出现,因为我正在打印所有行在我的代码中更进一步......
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您的正则表达式确实与您的字符串匹配。尝试一下这个在线匹配器。
问题是您传递的选项: NSRegularExpressionAllowCommentsAndWhitespace 导致匹配忽略空格和 # 符号加上正则表达式中 # 后面的任何您不需要的内容。为选项传递零。
Your regular expression does match your string. Try it in this online matcher.
The problem is the option you pass: NSRegularExpressionAllowCommentsAndWhitespace which causes the match to ignore white space and # signs plus anything following the # in the regular expression, which you don't want. Pass zero for the options.
您的问题在于您正在使用的选项。来自NSRegularExpression 类参考,
NSRegularExpressionAllowCommentsAndWhitespace
意味着正则表达式中的空格和#
后面的任何内容都将被忽略。启用该选项后,正则表达式的行为如下:您可能希望为选项传递 0,以便它们都不会被启用。
Your problem is in the options you are using. From the NSRegularExpression Class Reference,
NSRegularExpressionAllowCommentsAndWhitespace
means that whitespace and anything after a#
in the regular expression will be ignored. With that option enabled, the regular expression acts like this:You probably want to pass 0 for the options, so that none of them get enabled.