NSRegularExpression не соответствует - PullRequest
2 голосов
/ 20 января 2012

Я делаю регулярное выражение для следующей строки:

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 ]

3 голосов
/ 20 января 2012

Ваше регулярное выражение соответствует вашей строке. Попробуйте это в этом онлайн-сопоставлении .

Проблема в том, что вы передаете опцию: NSRegularExpressionAllowCommentsAndWhitespace , которая заставляет совпадение игнорировать пробел и знаки # плюс все, что следует после # в регулярном выражении, что вам не нужно. Передайте ноль для вариантов.

2 голосов
/ 20 января 2012

Ваша проблема в опциях, которые вы используете.Из ссылки на класс NSRegularExpression , 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];
...