2011-08-16 61 views
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]; 

回答

3

它看起來像你需要逃避$。

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

$(美元)在正則表達式模式被施加到所述串的端

匹配。 匹配一個位置而不是一個字符。大多數正則表達式風格都有一個 選項,以便在換行符之前使美元符合匹配條件(即在文件的一行中末尾爲 )。在最後一行 之前也匹配如果字符串以換行符結束則中斷。

由於它是一個特殊/保留字符,它需要被轉義。

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

+0

我得到的編譯器警告:未知的轉義序列「\ $」 –

+1

你必須轉義反斜線。試試\\ $。 – csano

+0

不再警告,但代碼未檢測到$ john type text –