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 に答える