代码: “*”“。*”正则表达式重复输出?
static NSString* regexReplace(NSString* regexString, NSString* subject, NSString* replacement)
{
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:regexString options:0 error:nil];
return [regex stringByReplacingMatchesInString:subject options:0 range:NSMakeRange(0, [subject length]) withTemplate:replacement];
}
int main(int argc, const char * argv[])
{
@autoreleasepool
{
NSLog(@"%@", regexReplace(@".*", @"foo", @"bar")); //Output: barbar
NSLog(@"%@", regexReplace(@".+", @"foo", @"bar")); //Output: bar
}
return 0;
}
为什么正则表达式替换,而不是 '酒吧' '富' 与 'BARBAR'?
是否有任何其他的正则表达式引擎这样做呢?它根本就不合逻辑。 – Tyilo 2012-02-14 02:34:06
@Tyilo显然是的。我刚刚尝试http://www.regextester.com/并得到相同的结果。 – 2012-02-14 02:39:10
那么,Perl,Java,JavaScript等等都做同样的事情,但我不知道他们是否算作“其他正则表达式引擎”(因为他们的正则表达式实现都非常密切相关)。不*这样做的一个正则表达式引擎是'sed'; 'sed's/a */b/g''会将'x'映射到'bxb',但'a'只映射到'b',而不是'bb'。如果您还有其他正则表达式引擎,请试试看! – ruakh 2012-02-14 02:42:40