NSRegularExpression 字符串由以下分隔

发布于 2024-11-18 15:38:38 字数 419 浏览 4 评论 0原文

我有一个字符串,例如 @"You've Earned Commentator and 4 ##other$$徽章"。我想检索由 ##$$ 分隔的子字符串 @"other"。我做了一个像这样的 NSRegularExpression:

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"##(.*)$$" options:NSRegularExpressionCaseInsensitive error:nil];

这完全忽略了 $$ 并返回以 ## 开头的内容。我做错了什么?谢谢。

I have a string for example @"You've earned Commentator and 4 ##other$$ badges". I want to retreive the substring @"other", which is delimited by ## and $$. I made a NSRegularExpression like this:

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"##(.*)$" options:NSRegularExpressionCaseInsensitive error:nil];

This completely ignores $$ and returns stuff starting with ##. What am I doing wrong? thanks.

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

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

发布评论

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

评论(2

救星 2024-11-25 15:38:38

那是因为“$”是一个特殊字符,代表行尾。尝试 \$\$ 对其进行转义并告诉解析器您想要这些字符。

Thats because '$' is a special character that represents the end of the line. Try \$\$ to escape it and tell the parser you want the characters.

萧瑟寒风 2024-11-25 15:38:38

在这种情况下我不会使用正则表达式,因为字符串攻击非常简单。不需要编译表达式的开销。

NSString *source = @"You've earned Commentator and 4 ##other$ badges";
NSRange firstDelimiterRange = [source rangeOfString:@"##"];
NSRange secondDelimiterRange = [source rangeOfString:@"$"];
NSString *result = [source substringWithRange:
  NSMakeRange(firstDelimiterRange.origin +2, 
    firstDelimiterRange.origin - secondDelimiterRange.origin)];

I wouldn't use a regex in this situation, since the string bashing is so simple. No need for the overhead of compiling the expression.

NSString *source = @"You've earned Commentator and 4 ##other$ badges";
NSRange firstDelimiterRange = [source rangeOfString:@"##"];
NSRange secondDelimiterRange = [source rangeOfString:@"$"];
NSString *result = [source substringWithRange:
  NSMakeRange(firstDelimiterRange.origin +2, 
    firstDelimiterRange.origin - secondDelimiterRange.origin)];
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文