使用 NSRegularExpression 在 (.*) 中获取匹配字符串
Get a match string in (.*) with 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
个数字。任何人都可以告诉我如何获得它吗?
捕获的组位于 NSTextCheckingResult
对象的范围索引 1+。
...rangeMatch?.rangeAtIndex(1)
我推荐一个更具体的模式:
let pattern = "<span class=bld>(\d+)\sUSD</span>"
或更短
let pattern = "(\d+)\sUSD"
\d+
是一个或多个数字,\s
是一个空白字符
我正在使用 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
个数字。任何人都可以告诉我如何获得它吗?
捕获的组位于 NSTextCheckingResult
对象的范围索引 1+。
...rangeMatch?.rangeAtIndex(1)
我推荐一个更具体的模式:
let pattern = "<span class=bld>(\d+)\sUSD</span>"
或更短
let pattern = "(\d+)\sUSD"
\d+
是一个或多个数字,\s
是一个空白字符