2017-08-07 44 views
0

拼湊位,我想出了這一點,但正則表達式不喜歡的模式: from SO用戶代理在解析快捷

struct UAHelpers { 
    static func isValid(uaString: String) -> Bool { 
     let regex = try! NSRegularExpression(pattern: ".+?[\/\s][\d.]+") 
     return (regex.firstMatch(in: uaString, range: uaString.nsrange) != nil) 
    } 
} 

Invalid escape sequence in literal

這看起來不錯,我 - 但沒有正則表達式的專家還regex.com似乎喜歡它?
也試過模式:\(([^(]*)\) - 沒有喜悅。

我試圖讓用戶(在自己的危險)進入但尚未提供一些解析。

+0

你想從用戶代理字符串中提取什麼?他們[完全混亂](http://webaim.org/blog/user-agent-string-history/)。每個瀏覽器假裝他們是別的 –

+0

我不知道欺騙另一個瀏覽器的起源,因爲我認爲webView或其他瀏覽器會繼承平臺值。我只是試圖提供變化能力和一些解析驗證 - 我猜你可能會認爲不應該需要這樣做,因爲任何變更應該知道他們在做什麼以及爲什麼。我只是想提供一些解析驗證。如果圖案是假的,請分享一個合適的,謝謝。 – slashlos

回答

1

要表示正則表達式模式.+?[/\s][\d.]+作爲Swift字符串,反斜槓\需要轉義。

(在斯威夫特String/已經沒有必要進行轉義。)

嘗試使用".+?[/\\s][\\d.]+"

雖然,我不確定這種模式是否真正提取了您的期望。

+0

duh;可以發誓我逃脫了空白和數字表達。我結束了''。+?[/ \\ s] [\\ d。] +「'在regex.com網站測試過(少額外轉義)解析了一些示例ok。我正在遵循什麼看來一些約定正則表達式分析字符串打算所有匹配。我認爲這是目標。至於爲什麼有人會這樣做/想要超越我。但如果有更好的方法,請加入,謝謝。 – slashlos