import Foundation
let pattern = ###"([CDEFGAB](#|##|b|bb)?)((M|m|aug|dim|sus|add)?(6|7|9|11|13|-5|\+5)?)"###
let regex = try! NSRegularExpression(pattern: pattern)
let testString = ##"""
Bm7 E7 E/A F#m7 Bm7
어두운 밤 골목길을 혼자 털레털레 오르다 c 올라
Bm7 E7 E/A F#m7
지나가는 네 생각에 내가 눈물이 난 게 아니고
Bm7 E7 C#m7 F#7
이부자리를 치우다 너의 양말 한 짝이 나와서
Bm7 E7 C#m7 F#7
갈아 신던 그 모습이 내가 그리워져 운 게 아니고
Bm7 E7 E/A F#m7
보일러가 고장 나서 울지
"""##
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