2017-05-19 124 views
0

我想使用正則表達式來獲得標題的值。這個正則表達式有什麼問題。比賽即將到來零。正則表達式問題,如果字符串包含 n

let strToCheck = "<title>youtube \n </title>" 
let rgx = "<title(.*?)>(.*?)</title>" 

let rx = try NSRegularExpression(pattern: rgx, options: [.caseInsensitive]) 

if let match = rx.firstMatch(in: strToCheck, options: [], range: 
      NSMakeRange(0, string.characters.count)) { 

    } 

回答

5

原來的問題是因爲你沒有逃脫/它讓你的正則表達式休息。你需要的斜槓前添加\如下:

<title(.*?)>(.*?)<\/title> 

Demo url

正如Wiktor Stribiżew在低於雨燕他的評論中解釋說不需要逃避斜線我已經更新了正則表達式來匹配新行案件以下:

<title(.*?)>(?s).*?</title> 

Demo URL

注:在demo有一個轉義字符/但它不是必需的Swift

+0

絕對不需要在快速正則表達式模式下轉義正斜槓。多行標誌僅重新定義了此處未使用的錨的行爲。 –

+0

哦,我不知道這一點迅速感謝澄清! ,但我已經更新了我的答案,以便匹配新線路案例(如果有) –

+0

更新並未使解決方案正確,這是一種可怕的模式。請考慮清除你錯誤的答案或修復。永遠不要使用'(。| \ n +)*?' - 這是一個偉大的性能殺手。 –

相關問題