要求:从"raw=281804 mV level=100.00%"字符串中提取281804和100.00
1.输入:
let pattern = "raw=(\\d+) mV level=(\\d+(?:\\.\\d+)?)%"
let batteryLevel = "raw=281804 mV level=100.00%"
2.实现方法:
/**
正则表达式获取目的值
- parameter pattern: 一个字符串类型的正则表达式
- parameter str: 需要比较判断的对象
- imports: 这里子串的获取先转话为NSString的[以后处理结果含NS的还是可以转换为NS前缀的方便]
- returns: 返回目的字符串结果值数组(目前将String转换为NSString获得子串方法较为容易)
- warning: 注意匹配到结果的话就会返回true,没有匹配到结果就会返回false
*/
func regexGetSub(pattern:String, str:String) -> [String] {
var subStr = [String]()
let regex = try! NSRegularExpression(pattern: pattern, options:[])
let matches = regex.matches(in: str, options: [], range: NSRange(str.startIndex...,in: str))
//解析出子串
for match in matches {
// subStr.append(String(str[Range(match.range(at: 1), in: str)!]))
// subStr.append(String(str[Range(match.range(at: 2), in: str)!]))
subStr.append(contentsOf: [String(str[Range(match.range(at: 1), in: str)!]),String(str[Range(match.range(at: 2), in: str)!])])
}
return subStr
}
3.输出:
var batteryParams = [String]()
batteryParams = regexGetSub(pattern: pattern, str: batteryLevel)
print(batteryParams)
打印信息:
["281804", "100.00"]