import Foundation
let pattern = #"^Benchmark.*([^EncodingJson][^JsonIter][^(GoJay(Unsafe)?]|(Decoder|Reuse|String|Unmapped|GoJson(NoEscape)?))$"#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"""
Benchmark_EncodeBigData_EncodingJson
Benchmark_EncodeBigData_JsonIter
Benchmark_EncodeBigData_GoJson
Benchmark_MarshalBigData_EncodingJson
Benchmark_MarshalBigData_JsonIter
Benchmark_MarshalBigData_GoJson
Benchmark_MarshalBytes_EncodingJson
Benchmark_MarshalBytes_JsonIter
Benchmark_MarshalBytes_GoJson
Benchmark_EncodeRawMessage_EncodingJson
Benchmark_EncodeRawMessage_JsonIter
Benchmark_EncodeRawMessage_GoJson
Benchmark_MarshalString_EncodingJson
Benchmark_MarshalString_JsonIter
Benchmark_MarshalString_GoJson
BenchmarkCodeDecoder
BenchmarkUnicodeDecoder
BenchmarkDecoderStream
BenchmarkCodeUnmarshal
BenchmarkCodeUnmarshalReuse
BenchmarkUnmarshalString
BenchmarkUnmarshalFloat64
BenchmarkUnmarshalInt64
BenchmarkIssue10335
BenchmarkUnmapped
Benchmark_Decode_SmallStruct_Unmarshal_EncodingJson
Benchmark_Decode_SmallStruct_Unmarshal_JsonIter
Benchmark_Decode_SmallStruct_Unmarshal_GoJay
Benchmark_Decode_SmallStruct_Unmarshal_GoJayUnsafe
Benchmark_Decode_SmallStruct_Unmarshal_GoJson
Benchmark_Decode_SmallStruct_Unmarshal_GoJsonNoEscape
Benchmark_Decode_SmallStruct_Stream_EncodingJson
Benchmark_Decode_SmallStruct_Stream_JsonIter
Benchmark_Decode_SmallStruct_Stream_GoJay
Benchmark_Decode_SmallStruct_Stream_GoJson
Benchmark_Decode_MediumStruct_Unmarshal_EncodingJson
Benchmark_Decode_MediumStruct_Unmarshal_JsonIter
Benchmark_Decode_MediumStruct_Unmarshal_GoJay
Benchmark_Decode_MediumStruct_Unmarshal_GoJayUnsafe
Benchmark_Decode_MediumStruct_Unmarshal_GoJson
Benchmark_Decode_MediumStruct_Unmarshal_GoJsonNoEscape
Benchmark_Decode_MediumStruct_Stream_EncodingJson
Benchmark_Decode_MediumStruct_Stream_JsonIter
Benchmark_Decode_MediumStruct_Stream_GoJay
Benchmark_Decode_MediumStruct_Stream_GoJson
Benchmark_Decode_LargeStruct_Unmarshal_EncodingJson
Benchmark_Decode_LargeStruct_Unmarshal_JsonIter
Benchmark_Decode_LargeStruct_Unmarshal_GoJay
Benchmark_Decode_LargeStruct_Unmarshal_GoJayUnsafe
Benchmark_Decode_LargeStruct_Unmarshal_GoJson
Benchmark_Decode_LargeStruct_Unmarshal_GoJsonNoEscape
Benchmark_Decode_LargeStruct_Stream_EncodingJson
Benchmark_Decode_LargeStruct_Stream_JsonIter
Benchmark_Decode_LargeStruct_Stream_GoJay
Benchmark_Decode_LargeStruct_Stream_GoJson
Benchmark_Encode_SmallStruct_EncodingJson
Benchmark_Encode_SmallStruct_JsonIter
Benchmark_Encode_SmallStruct_GoJay
Benchmark_Encode_SmallStruct_GoJson
Benchmark_Encode_MediumStruct_EncodingJson
Benchmark_Encode_MediumStruct_JsonIter
Benchmark_Encode_MediumStruct_GoJay
Benchmark_Encode_MediumStruct_GoJson
Benchmark_Encode_LargeStruct_EncodingJson
Benchmark_Encode_LargeStruct_JsonIter
Benchmark_Encode_LargeStruct_GoJay
Benchmark_Encode_LargeStruct_GoJson
"""#
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