Como posso usar o NSRegularExpression em seqüências de caracteres Swift com caracteres Unicode de largura variável?

Estou tendo problemas para conseguirNSRegularExpression para combinar padrões em cadeias com caracteres Unicode mais largos (?). Parece que o problema é o parâmetro range - o Swift conta caracteres Unicode individuais, enquanto o Objective-C trata as strings como se fossem compostas de unidades de código UTF-16.

Aqui está minha string de teste e duas expressões regulares:

let str = "dogcow"
let dogRegex = NSRegularExpression(pattern: "d.g", options: nil, error: nil)!
let cowRegex = NSRegularExpression(pattern: "c.w", options: nil, error: nil)!

Posso combinar o primeiro regex sem problemas:

let dogMatch = dogRegex.firstMatchInString(str, options: nil, 
                   range: NSRange(location: 0, length: countElements(str)))
println(dogMatch?.range)  // (0, 3)

Mas o segundo falha com os mesmos parâmetros, porque o intervalo que eu envio (0 ... 7) não é longo o suficiente para cobrir toda a cadeia, tanto quantoNSRegularExpression está preocupado:

let cowMatch = cowRegex.firstMatchInString(str, options: nil, 
                   range: NSRange(location: 0, length: countElements(str)))
println(cowMatch.range)  // nil

Se eu usar um intervalo diferente, posso fazer a partida ser bem-sucedida:

let cowMatch2 = cowRegex.firstMatchInString(str, options: nil, 
                    range: NSRange(location: 0, length: str.utf16Count))
println(cowMatch2?.range)  // (7, 3)

mas não sei como extrair o texto correspondente da sequência, pois esse intervalo fica fora do intervalo da sequência Swift.

questionAnswers(1)

yourAnswerToTheQuestion