【swift2】urlを正規表現で解析する方法

はじめに

今回やりたかったのは、カスタムurlスキーマから起動されたときに指定されたurlによって特定の画面を開くとということ。
カスタムurlスキーマについてはあとでまとめます。今回はurlを正規表現で解析する部分をメモします

url解析用の関数

たぶん、ほとんどどこかのサイトにのっていたもののまんまなんですけど、、、

/**
 * 正規表現の共通処理
 * @param 正規表現
 * @param 解析したい文字列(url)
 * @result 結果
 */
func regexUrlScheme(pattern: String, url: NSString) -> String?
{
    var result: String?
    let regex = try? NSRegularExpression(pattern: pattern, options: NSRegularExpressionOptions())
    if let _result = regex?.firstMatchInString(url as String, options: NSMatchingOptions(), range: NSMakeRange(0, url.length))
    {
        for var i = 0; i < _result.numberOfRanges; ++i
        {
            result = url.substringWithRange(_result.rangeAtIndex(i))
        }
    }
    return result
}

呼び出し元

// uri検証
let uri = "/profile"
if let _ = regexUrlScheme("/profile", uri) {
    _ // /profile
}

// パラメータ付きuri検証
let uri2 = "/profile/get/id/1/"
if let _ = regexUrlScheme("/profile/get/id/([0-9]+)/", uri2) {
    _ // 1
}

正規表現ってただでさえ難しいのに、、、なんか色々難しいな、、、

以上、メモでした