import Foundation
let pattern = #"'\$([\d]*)[\.]?(\d+)'"#
let regex = try! NSRegularExpression(pattern: pattern, options: [.anchorsMatchLines, .caseInsensitive])
let testString = ##"""
#Test-2019-8
#1.'do+g'
dog, doooog, abcdogef,
asdooooijk dooog asdoogghj
'dog', 'doooog', 'abcdogef'
#2. 'ab*d'
ad, abd, abbbd
'ad', 'abd', 'abbbbd'
'sad', 'cabd', 'abbbds'
#3. '[xy]{2}AB'
'xxAB', 'xyAB','yyAB' '2xxAB'
#4. '[a-z].?'
'aA', 'b9', 'z' 'bX'
'aB z8 b6'
#5. '5[abc]?ef'
'5aef', 'a5bef', '5ef' '5ef'
#6. Taiwan ID : '([A-Z])([12])(\d{8})','[A-Z][12]\d{8}'
'A102926987', 'B212345678'
#7. mobile tel_num:'(09)(\d\d)[-\s](\d{3})[-\s](\d{3})'
'0988 123 456', '0978-456-789'
# : '09\d\d[-\s]\d\d\d'
'0924-357'
#8. Home tel_num:
# '([\(]?\d\d[\)-]?)([\d]{4})([-\s]{1}[\d]{4})'
'(02)2257 3150', '02-2250-3457','(12)2245 3214'
# '[\(]?(0[23])[\)-]?(\d{4})'
'(02)2345', '03-1348'
#9. Date Time:yyyy/mm/dd
#'(20[12]\d)[-\/]([1]?[\d])[-\/]([1-3][\d])'
'2019/1/25', '2018-12-31'
#'(20[12]\d)[-\/]([01]\d)[-\/](\d{2})'
'2019/01/15' ,'2020-11-28'
#10. floating number: '\$([\d]*)[\.]?(\d+)'
'$123.34', '$2345' '$0.234' ,'1.87'
"""##
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