Проблема с обнаружением регулярных выражений $ <name> - PullRequest
2 голосов
/ 17 августа 2011

Я пытаюсь определить следующее выражение: $

например

$john

или

$mike

Что не так с моим регулярным выражением?

//Check for $symbol
    NSRegularExpression *symbolRegex = [[NSRegularExpression alloc] initWithPattern:@"($[a-zA-Z0-9_]+)" 
                                                                              options:NSRegularExpressionCaseInsensitive 
                                                                                error:nil];
    matches = [symbolRegex matchesInString:labelText options:0 range:NSMakeRange(0, [labelText length])];

    for (NSTextCheckingResult *result in matches) {
        NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"symbol://%@",[labelText substringWithRange:result.range]]];
        [bodyLabel addCustomLink:url inRange:[result range]];        
    }

    [symbolRegex release];

1 Ответ

3 голосов
/ 17 августа 2011

Похоже, вам нужно сбежать от $.

(\\$[a-zA-Z0-9_]+)

$ (доллар)

Соответствует концу строки, к которой применяется шаблон регулярного выражения. Соответствует позиции, а не персонажу. Большинство регулярных выражений имеют возможность сделать совпадение доллара до разрыва строки (т.е. в конце строка в файле). Также совпадает с самой последней строкой разрыв, если строка заканчивается переводом строки.

Поскольку это специальный / зарезервированный символ, его необходимо экранировать.

http://www.regular -expressions.info / reference.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...