import Foundation
let pattern = #"((ยี่|สาม|สี่|ห้า|หก|เจ็ด|แปด|เก้า)?(สิบ)(เอ็ด|สอง|สาม|สี่|ห้า|หก|เจ็ด|แปด|เก้า)?)สตางค์|(หนึ่ง|สอง|สาม|สี่|ห้า|หก|เจ็ด|แปด|เก้า|สิบ)สตางค์|(ถ้วน)"#
let regex = try! NSRegularExpression(pattern: pattern, options: .dotMatchesLineSeparators)
let testString = #"""
ถ้วน
หนึ่งสตางค์
เอ็ดสตางค์
สองสตางค์
สามสตางค์
สี่สตางค์
ห้าสตางค์
หกสตางค์
เจ็ดสตางค์
แปดสตางค์
เก้าสตางค์
สิบสตางค์
สิบเอ็ดสตางค์
สิบสองสตางค์
สิบสามสตางค์
สิบสี่สตางค์
ห้าห้าสตางค์
สิบห้าสตางค์
สิบหกสตางค์
สิบเจ็ดสตางค์
สิบแปดสตางค์
สิบเก้าสตางค์
ยี่สิบสตางค์
ยี่สิบเอ็ดสตางค์
ยี่สิบสองสตางค์
ยี่สิบสามสตางค์
ยี่สิบสี่สตางค์
ยี่สิบห้าสตางค์
ยี่สิบหกสตางค์
ยี่สิบเจ็ดสตางค์
ยี่สิบแปดสตางค์
ยี่สิบเก้าสตางค์
สามสิบสตางค์
สามสิบเอ็ดสตางค์
สามสิบสองสตางค์
สามสิบสามสตางค์
สามสิบสี่สตางค์
สามสิบห้าสตางค์
สามสิบหกสตางค์
สามสิบเจ็ดสตางค์
สามสิบแปดสตางค์
สามสิบเก้าสตางค์
สี่สิบสตางค์
สี่สิบเอ็ดสตางค์
สี่สิบสองสตางค์
สี่สิบสามสตางค์
สี่สิบสี่สตางค์
สี่สิบห้าสตางค์
สี่สิบหกสตางค์
สี่สิบเจ็ดสตางค์
สี่สิบแปดสตางค์
สี่สิบเก้าสตางค์
ห้าสิบสตางค์
ห้าสิบเอ็ดสตางค์
ห้าสิบสองสตางค์
ห้าสิบสามสตางค์
ห้าสิบสี่สตางค์
ห้าสิบห้าสตางค์
ห้าสิบหกสตางค์
ห้าสิบเจ็ดสตางค์
ห้าสิบแปดสตางค์
ห้าสิบเก้าสตางค์
หกสิบสตางค์
หกสิบเอ็ดสตางค์
หกสิบสองสตางค์
หกสิบสามสตางค์
หกสิบสี่สตางค์
หกสิบห้าสตางค์
หกสิบหกสตางค์
หกสิบเจ็ดสตางค์
หกสิบแปดสตางค์
หกสิบเก้าสตางค์
เจ็ดสิบสตางค์
เจ็ดสิบเอ็ดสตางค์
เจ็ดสิบสองสตางค์
เจ็ดสิบสามสตางค์
เจ็ดสิบสี่สตางค์
เจ็ดสิบห้าสตางค์
เจ็ดสิบหกสตางค์
เจ็ดสิบเจ็ดสตางค์
เจ็ดสิบแปดสตางค์
เจ็ดสิบเก้าสตางค์
แปดสิบสตางค์
แปดสิบเอ็ดสตางค์
แปดสิบสองสตางค์
แปดสิบสามสตางค์
แปดสิบสี่สตางค์
แปดสิบห้าสตางค์
แปดสิบหกสตางค์
แปดสิบเจ็ดสตางค์
แปดสิบแปดสตางค์
แปดสิบเก้าสตางค์
เก้าสิบสตางค์
เก้าสิบเอ็ดสตางค์
เก้าสิบสองสตางค์
เก้าสิบสามสตางค์
เก้าสิบสี่สตางค์
เก้าสิบห้าสตางค์
เก้าสิบหกสตางค์
เก้าสิบเจ็ดสตางค์
เก้าสิบแปดสตางค์
เก้าสิบเก้าสตางค์
"""#
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