2016-10-17 1 views
0

J'utilise Swift 2, et en essayant d'obtenir un nombre à partir d'une réponse de données HTML d'URL, dataString est mon texte HTML, j'utilise NSRegularExpression et essaie d'obtenir la chaîneObtenir une chaîne de correspondance dans (. *) Avec NSRegularExpression

let patten = "<span class=bld>(.*)USD</span>" 
let reg = try? NSRegularExpression(pattern: patten, options: NSRegularExpressionOptions.init(rawValue: 0)) 
let rangeMatch = reg?.firstMatchInString(dataString, options: [], range: NSMakeRange(0, dataString.characters.count)) 
if rangeMatch != nil { 
    let res = (dataString as! NSString).substringWithRange((rangeMatch?.range)!) 
    print(res) 
} 

Mais le résultat est que je suis pleine chaîne <span class=bld>22309 USD</span>, je veux seulement obtenir 22309 nombre. Quelqu'un pourrait me montrer comment l'obtenir s'il vous plaît?

Répondre

1

Les groupes capturés sont situés à l'index de plage 1+ de l'objet NSTextCheckingResult.

...rangeMatch?.rangeAtIndex(1) 

Je recommande un modèle plus précis:

let pattern = "<span class=bld>(\\d+)\\sUSD</span>" 

ou encore plus court

let pattern = "(\\d+)\\sUSD" 

\\d+ est un ou plusieurs chiffres, \\s est un blanc

+0

travail incroyable, merci toi –