使用NSRegularExpression获取(。*)中的匹配字符串

时间:2016-10-17 15:53:44

标签: swift nsregularexpression

我正在使用Swift 2,并尝试从URL获取HTML数据响应中的数字,dataString是我的HTML文本,我使用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)
 }

但我得到的结果是完整的字符串<span class=bld>22309 USD</span>,我只想获得22309个数字。任何人都可以告诉我如何得到它?

1 个答案:

答案 0 :(得分:1)

捕获的组位于NSTextCheckingResult对象的范围索引1+处。

...rangeMatch?.rangeAtIndex(1)

我建议使用更具体的模式:

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

或更短

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

\\d+是一个或多个数字,\\s是一个空格字符