import Foundation
let pattern = #"^(.*?) = { Hash=(?P<hash>\d*), X=(?P<x>\d*), Y=(?P<y>\d*), Rot=(?P<rot>\d*), Flip=(?P<flip>\d*), Var=(?P<var>\d*) }"#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"""
Language = "Traditional Chinese"
Hideout Name = "藏身處 - 羅雀後街"
Hideout Hash = 62635
倉庫 = { Hash=3230065491, X=265, Y=227, Rot=0, Flip=0, Var=0 }
公會倉庫 = { Hash=139228481, X=340, Y=231, Rot=15326, Flip=0, Var=0 }
傳送點 = { Hash=1224707366, X=298, Y=385, Rot=22179, Flip=0, Var=1 }
工藝台 = { Hash=2059629901, X=308, Y=288, Rot=32768, Flip=0, Var=4 }
黃金地球儀 = { Hash=2306038834, X=298, Y=227, Rot=0, Flip=0, Var=0 }
娜瓦莉 = { Hash=693228958, X=322, Y=260, Rot=32768, Flip=0, Var=0 }
埃哈 = { Hash=2684274993, X=325, Y=191, Rot=34826, Flip=0, Var=0 }
艾瓦 = { Hash=2115859440, X=265, Y=207, Rot=16384, Flip=0, Var=0 }
赫蓮娜 = { Hash=845403974, X=314, Y=238, Rot=47093, Flip=0, Var=0 }
"""#
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