import Foundation
let pattern = #"\/[\w\/\-\.]*\b"#
let regex = try! NSRegularExpression(pattern: pattern)
let testString = #""JOB_FINISH" "9.13" 1492516700 8652537 42878 -2112536045 1 1492516484 0 0 1492516498 "ukunapul" "short" "select[type==LINUX64] rusage[mem=8000]" "" "/pkg/ice/sysadmin/bin/linux-pre-exec" "san-qp200-d5-17-01" "/prj/vlsi/memchar/memchar_sec10lpe/sllsp122_rhrh_1p100/lpe-2_0_4_0_sm-1_100/uday_MA_disk_performance_test/sram2112_s10lpellrflv1223a_rhrh/timing" "" "/prj/vlsi/memchar/memchar_sec10lpe/sllsp122_rhrh_1p100/lpe-2_0_4_0_sm-1_100/uday_MA_disk_performance_test/sram2112_s10lpellrflv1223a_rhrh/timing/lsf_logs/rf_s10lpellrflv1223a_rhrh_acc_rf_s10lpellrflv1223a_rhrh_acc_00.465v_1.050v_ffg_0c_rcw_ccw_0c_1.110_libgen.log" "" "9/1492516484.8652537" 0 1 "san-qp200-d5-2-02" 64 161.0 "Libgen:rf_s10lpellrflv1223a_rhrh_acc_rf_s10lpellrflv1223a_rhrh_acc_0 0.465v_1.050v_ffg_0c_rcw_ccw_0c_1.110 " "/prj/vlsi/memchar/memchar_lpe_run/sp_non_red/ukunapul/example_sec10lpe_ma_data/mem_libgen/5.5/perl/bin/mem_libgen -replay /prj/vlsi/memchar/memchar_sec10lpe/sllsp122_rhrh_1p100/lpe-2_0_4_0_sm-1_100/uday_MA_disk_performance_test/sram2112_s10lpellrflv1223a_rhrh/timing/tmp/replay/rf_s10lpellrflv1223a_rhrh_acc_rf_s10lpellrflv1223a_rhrh_acc_0_0.465v_1.050v_ffg_0c_rcw_ccw_0c_1.110.mem_libgen.replay" 247.719480 4.420275 238204 0 -1 0 0 970373 0 0 139344 510984 -1 0 0 0 20489 33778 -1 "" "default" 0 1 "" "" 0 2772991 4822300 "" "" "" "ipl_mem_char_sc" 0 "" 0 "" -1 "/QCOM/IPL/ipl.memory/ipl.memory.char/ipl.memory.char.nazgul_10lpe/ipl.memory.char.nazgul_10lpe.lsf.gridsdcb/ukunapul" "default" "" "" -1 "" "" 2622480 "" 0 0 10800 0 2772991 "select[((type == LINUX64 ) && (type == any)) && ((health == ok ) && (type == any))] order[-maxmem:r15s:pg] rusage[mem=8000.00] " "" -1 "" -1 0 "" "" 211 "/prj/vlsi/memchar/memchar_sec10lpe/sllsp122_rhrh_1p100/lpe-2_0_4_0_sm-1_100/uday_MA_disk_performance_test/sram2112_s10lpellrflv1223a_rhrh/timing" 0 1 "san-qp200-d5-2-02""#
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