import Foundation
let pattern = #"\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2},\d{3}\sINFO NEXT ACTION: COMMAND =(.*?)(?=\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2},\d{3}\s)"#
let regex = try! NSRegularExpression(pattern: pattern, options: [.anchorsMatchLines, .dotMatchesLineSeparators])
let testString = #"""
2023-04-20 04:59:25,406 INFO CRITICISM: It's crucial to critically analyze any scientific article we come across and check the credibility and reliability of sources. It's also important to avoid relying on anecdotal and inconclusive data when it comes to novel targets for breast cancer.
2023-04-20 04:59:25,987 INFO NEXT ACTION: COMMAND = write_to_file ARGUMENTS = {'file': 'pi3k_articles.txt', 'text': 'Many PI3K pathway-targeted therapies have been tested in oncology trials, resulting in regulatory approval of one isoform-selective inhibitor...', 'text_append': True}
2023-04-20 04:59:26,683 INFO SYSTEM: Command write_to_file returned: File written to successfully.
2023-04-20 04:59:47,045 INFO THOUGHTS: We have written the articles to a file as recommended. We can now use the `search_files` command to filter the file for keywords related to breast cancer targets. Additionally, we can employ NLP analysis by utilizing GPT Agents to help sift through information effectively. Lastly, we should remember to filter out any unwanted information/references from our final list of targets. We can run these through more GPT to determine which references are significant to our research question.
"""#
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