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

例如

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

最佳答案

看来您需要转义$。

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



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


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

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

10-06 05:39
查看更多