import Foundation
let pattern = #"[a-z0-9]{64}=(~|\^|\||&|[A-z0-9]{64})"#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"""
a34cffe6a40e642fb7a4c101516ea0ed06eaef08c096c7f96656ca7913debc03=a34cffe6a40e642fb7a4c101516ea0ed06eaef08c096c7f96656ca7913debc03^a16cb280d0c47675ef1983a69f9fadd2f6f304f7a78b329ed934868ae97d59bf
a34cffe6a40e642fb7a4c101516ea0ed06eaef08c096c7f96656ca7913debc03=~a34cffe6a40e642fb7a4c101516ea0ed06eaef08c096c7f96656ca7913debc03
a18e9f89e839061e45c759ab01c2b5a56ad84d01b2e68830f070581d56214f00=~(a18e9f89e839061e45c759ab01c2b5a56ad84d01b2e68830f070581d56214f00&a18e9f89e839061e45c759ab01c2b5a56ad84d01b2e68830f070581d56214f00)
a16cb280d0c47675ef1983a69f9fadd2f6f304f7a78b329ed934868ae97d59bf=~a16cb280d0c47675ef1983a69f9fadd2f6f304f7a78b329ed934868ae97d59bf
a18e9f89e839061e45c759ab01c2b5a56ad84d01b2e68830f070581d56214f00=a18e9f89e839061e45c759ab01c2b5a56ad84d01b2e68830f070581d56214f00|a18e9f89e839061e45c759ab01c2b5a56ad84d01b2e68830f070581d56214f00
a68d927e52e91be7d0491dc2b9d078a5e41fb6e8fdb26e1c969557e041eb1549=a68d927e52e91be7d0491dc2b9d078a5e41fb6e8fdb26e1c969557e041eb1549^a34cffe6a40e642fb7a4c101516ea0ed06eaef08c096c7f96656ca7913debc03
a68d927e52e91be7d0491dc2b9d078a5e41fb6e8fdb26e1c969557e041eb1549=a68d927e52e91be7d0491dc2b9d078a5e41fb6e8fdb26e1c969557e041eb1549&a18e9f89e839061e45c759ab01c2b5a56ad84d01b2e68830f070581d56214f00
a18e9f89e839061e45c759ab01c2b5a56ad84d01b2e68830f070581d56214f00=a18e9f89e839061e45c759ab01c2b5a56ad84d01b2e68830f070581d56214f00&a68d927e52e91be7d0491dc2b9d078a5e41fb6e8fdb26e1c969557e041eb1549
a18e9f89e839061e45c759ab01c2b5a56ad84d01b2e68830f070581d56214f00=~(a18e9f89e839061e45c759ab01c2b5a56ad84d01b2e68830f070581d56214f00&a18e9f89e839061e45c759ab01c2b5a56ad84d01b2e68830f070581d56214f00)
a68d927e52e91be7d0491dc2b9d078a5e41fb6e8fdb26e1c969557e041eb1549=~(a68d927e52e91be7d0491dc2b9d078a5e41fb6e8fdb26e1c969557e041eb1549&a68d927e52e91be7d0491dc2b9d078a5e41fb6e8fdb26e1c969557e041eb1549)
a34cffe6a40e642fb7a4c101516ea0ed06eaef08c096c7f96656ca7913debc03=a34cffe6a40e642fb7a4c101516ea0ed06eaef08c096c7f96656ca7913debc03|a18e9f89e839061e45c759ab01c2b5a56ad84d01b2e68830f070581d56214f00
a16cb280d0c47675ef1983a69f9fadd2f6f304f7a78b329ed934868ae97d59bf=a16cb280d0c47675ef1983a69f9fadd2f6f304f7a78b329ed934868ae97d59bf&a68d927e52e91be7d0491dc2b9d078a5e41fb6e8fdb26e1c969557e041eb1549
a18e9f89e839061e45c759ab01c2b5a56ad84d01b2e68830f070581d56214f00=a18e9f89e839061e45c759ab01c2b5a56ad84d01b2e68830f070581d56214f00&a18e9f89e839061e45c759ab01c2b5a56ad84d01b2e68830f070581d56214f00
a68d927e52e91be7d0491dc2b9d078a5e41fb6e8fdb26e1c969557e041eb1549=~(a68d927e52e91be7d0491dc2b9d078a5e41fb6e8fdb26e1c969557e041eb1549&a68d927e52e91be7d0491dc2b9d078a5e41fb6e8fdb26e1c969557e041eb1549)
a16cb280d0c47675ef1983a69f9fadd2f6f304f7a78b329ed934868ae97d59bf=a16cb280d0c47675ef1983a69f9fadd2f6f304f7a78b329ed934868ae97d59bf^a34cffe6a40e642fb7a4c101516ea0ed06eaef08c096c7f96656ca7913debc03
a68d927e52e91be7d0491dc2b9d078a5e41fb6e8fdb26e1c969557e041eb1549=a68d927e52e91be7d0491dc2b9d078a5e41fb6e8fdb26e1c969557e041eb1549^a18e9f89e839061e45c759ab01c2b5a56ad84d01b2e68830f070581d56214f00
a18e9f89e839061e45c759ab01c2b5a56ad84d01b2e68830f070581d56214f00=~(a18e9f89e839061e45c759ab01c2b5a56ad84d01b2e68830f070581d56214f00&a16cb280d0c47675ef1983a69f9fadd2f6f304f7a78b329ed934868ae97d59bf)
a18e9f89e839061e45c759ab01c2b5a56ad84d01b2e68830f070581d56214f00=a18e9f89e839061e45c759ab01c2b5a56ad84d01b2e68830f070581d56214f00|a16cb280d0c47675ef1983a69f9fadd2f6f304f7a78b329ed934868ae97d59bf
"""#
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