我正在使用 Swift 3 并尝试访问捕获的组。
let regexp = "((ALREADY PAID | NOT ALR | PROVIDER MAY | READY | MAY BILL | BILL YOU | PAID)((.|\\n)*))(( \\d+)(\\.+|-+)(\\d\\d))"
// check if some substring is in the recognized text
if let range = stringText.range(of:regexp, options: .regularExpression) {
let result = tesseract.recognizedText.substring(with:range)
}
我希望能够提取出捕获的最后两个数字(\d\d
)所以如果文本是:ALREADY PAID asfasdfadsfasdf 39.15
,它会提取15
。这是一个正则表达式生成器,显示了我想要的内容。通常情况下,我能够做到$8
获取提取的第 8 个组,但我不知道如何在 Swift 3 中做到这一点。
http://regexr.com/3fh1e http://regexr.com/3fh1e
斯威夫特 4、斯威夫特 5
extension String {
func groups(for regexPattern: String) -> [[String]] {
do {
let text = self
let regex = try NSRegularExpression(pattern: regexPattern)
let matches = regex.matches(in: text,
range: NSRange(text.startIndex..., in: text))
return matches.map { match in
return (0..<match.numberOfRanges).map {
let rangeBounds = match.range(at: $0)
guard let range = Range(rangeBounds, in: text) else {
return ""
}
return String(text[range])
}
}
} catch let error {
print("invalid regex: \(error.localizedDescription)")
return []
}
}
}
example:
let res = "1my 2own 3string".groups(for:"(([0-9]+)[a-z]+) ")
(lldb) 资源 ▿ 2 个元素
▿ 0 : 3 个元素
- 0 : "1my "
- 1 : "1my"
- 2 : "1"
▿ 1 : 3 元素
- 0 : "2own "
- 1 : "2own"
- 2 : "2"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)