正则表达式检测$ <name> </name>的问题

时间:2011-08-16 23:51:35

标签: iphone objective-c regex cocoa-touch nsregularexpression

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

例如

$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 个答案:

答案 0 :(得分:3)

看起来你需要逃避$。

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

$(美元)

     

应用正则表达式模式的字符串末尾匹配。   匹配位置而不是角色。大多数正则表达口味都有   在换行符之前使美元匹配的选项(即在结束时)   一个文件中的一行)。也在最后一行之前匹配   如果字符串以换行符结束则中断。

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

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