正则表达式检测 $时出现问题

发布于 2024-11-29 16:28:36 字数 887 浏览 1 评论 0原文

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

例如

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

I am trying to detect the following expression: $

for example

$john

or

$mike

What is wrong with my regex?

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

愛上了 2024-12-06 16:28:36

看起来你需要转义 $。

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

$(美元)

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

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

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

It looks like you need to escape the $.

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

$ (dollar)

Matches at the end of the string the regex pattern is applied to.
Matches a position rather than a character. Most regex flavors have an
option to make the dollar match before line breaks (i.e. at the end of
a line in a file) as well. Also matches before the very last line
break if the string ends with a line break.

Since it's a special/reserved character, it needs to be escaped.

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文