import Foundation
let pattern = #"US\s*(?:[2-9]\d{3}\/?\d{7}\s*A[129]|\d{7}\s*B[12])"#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"""
发明专利申请号 1-6 位顺序号或 2 位序列号
(01-28)+/6 位顺序号 1234 13/001234
发明专利临时申请号 60+/6 位顺序号或 61/+/6 位
顺序号 60/001234 61/000456
发明专利申请公布号 US+4 位年代+/7 位顺序号
+A1
无 US 2001/0001111 A1
发明专利申请再公布号 US+4 位年代+/7 位顺序号
+A2
无 US 2002/0042300 A2
发明专利申请公布的更
正号
US+4 位年代+/7 位顺序号
+A9
无 US 2002/0090260 A9
发明专利号(无专利申
请公布)
1-7 位顺序号或 US+1-7 位顺
序号+B1
123456 US 6198606 B1
发明专利号(有专利申
请公布)
US+1-7 位顺序号+B2 无 US 6654321 B2
"""#
let stringRange = NSRange(location: 0, length: testString.utf16.count)
let matches = regex.matches(in: testString, range: stringRange)
var result: [[String]] = []
for match in matches {
var groups: [String] = []
for rangeIndex in 1 ..< match.numberOfRanges {
let nsRange = match.range(at: rangeIndex)
guard !NSEqualRanges(nsRange, NSMakeRange(NSNotFound, 0)) else { continue }
let string = (testString as NSString).substring(with: nsRange)
groups.append(string)
}
if !groups.isEmpty {
result.append(groups)
}
}
print(result)
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Swift 5.2, please visit: https://developer.apple.com/documentation/foundation/nsregularexpression