文字っぽいの。

文字を書いています。写真も混ざります。

Swiftで正規表現を使ってグループ化(カッコで囲んだ部分を取り出す奴)をする

毎回ググっててつらいので、メモ代わりに書いておく。ちなみに、rubyだとこうやって書くやつ。

str = '123123/456456'
regex = /([0-9]+)\/([0-9]+)/
result = str.match(regex)

p result[0] #=> "123123/456456"
p result[1] #=> "123123"
p result[2] #=> "456456"

Swiftだとなんかちょっと大変になる。他に良い書き方とかあるんですかね。

let string: String = "123123/456456"
let pattern = "([0-9]+)/([0-9]+)$"
if let regex = NSRegularExpression(pattern: pattern, options: nil, error: nil) {
    if let result: NSTextCheckingResult = regex.firstMatchInString(string, options: nil, range: NSMakeRange(0, string.length)) {
        let nsString: NSString = string as NSString
        
        println(nsString.substringWithRange(result.rangeAtIndex(0))) // => 123123/456456
        println(nsString.substringWithRange(result.rangeAtIndex(1))) // => 123123
        println(nsString.substringWithRange(result.rangeAtIndex(2))) // => 456456
    }
}