【问题标题】:Problem with regex detecting $<name>正则表达式检测 $<name> 的问题
【发布时间】:2011-10-28 12:38:57
【问题描述】:

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

例如

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

【问题讨论】:

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


    【解决方案1】:

    看来您需要转义 $.

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

    $(美元)

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

    由于是特殊/保留字符,需要转义。

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

    【讨论】:

    • 我收到编译器警告:未知转义序列 '\$'
    • 你必须转义反斜杠。试试 \\$。
    • 没有更多警告,但代码没有检测到 $john 类型的文本
    • 字符串是什么样的?只是“$约翰”?您是否遇到任何类型的错误?
    • 没有匹配,所以我的匹配数组是空的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-14
    • 1970-01-01
    • 1970-01-01
    • 2011-01-25
    相关资源
    最近更新 更多