2012-04-13 70 views
0

我試圖從一個音頻流使用NSRegularExpression分割ICECAST數據,但我認爲我有一個與我的模式的一般問題。NSRegularExpression模式爲ICECAST數據

這裏是我的代碼:

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

NSMutableString *messageAsText = [NSMutableString stringWithUTF8String:[messageAsRawData bytes]]; 
NSTextCheckingResult *match = [regex firstMatchInString:messageAsText 
               options:0 
                range:NSMakeRange(0, [messageAsText length])]; 
NSString *message = [messageAsText substringWithRange:[match rangeAtIndex:1]]; 
NSLog(@"Input: '%@', Output: '%@'", messageAsText, message); 

說輸入的是:

StreamTitle='Thomas Newman - Awkward Talk [The Horse Whisperer]';StreamUrl=''; 

我希望得到這個:

Thomas Newman - Awkward Talk [The Horse Whisperer] 

,但我得到這個:

Thomas Newman - Awkward Talk [The Horse Whisperer]';StreamUrl=' 
http://regex.larsolavtorvik.com/

可能有人點我到正確的正則表達式:

這如果這裏測試不NSRegularExpression相關的,因爲正則表達式顯示了同樣的結果呢?

+0

BTW:在「ungreedy」選項強制所需的匹配...尋找在iOS中ungreedy選項... 示例PHP: preg_match_all('/ StreamTitle ='(。*)';/iU','StreamTitle ='Mychael和Jeff Danna - Camelot的大廳'; StreamUrl ='';',$ result); – decades 2012-04-13 22:31:29

+0

好的,快速找到和自己回答:一個小引號使竅門: 而不是 @「StreamTitle ='(。*)';」 我需要使用 @「StreamTitle ='(。*?)';」 話題關閉 – decades 2012-04-13 22:38:06

+0

你的意思是一個小問號? – borrrden 2012-04-14 01:49:08

回答

2

嘗試使* quatifier懶惰通過與?這樣它後面:

StreamTitle='(.*?)'