代碼: 「*」「。*」正則表達式重複輸出?
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