1

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

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

这完全忽略$$并返回以##. 我究竟做错了什么?谢谢。

4

2 回答 2

1

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

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)];
于 2011-07-06T03:57:46.130 回答
1

那是因为 '$' 是代表行尾的特殊字符。尝试\$\$转义它并告诉解析器您想要这些字符。

于 2011-07-06T02:10:10.013 回答