2

我正在尝试检测以下表达式:$

例如

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

1 回答 1

3

看起来你需要逃避 $.

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

$(美元)

匹配应用正则表达式模式的字符串末尾。匹配一个位置而不是一个字符。大多数正则表达式风格都可以选择在换行之前(即在文件中的行尾)进行美元匹配。如果字符串以换行符结尾,则在最后一个换行符之前也匹配。

由于它是特殊/保留字符,因此需要对其进行转义。

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

于 2011-08-16T23:53:52.753 回答