import Foundation
let pattern = #"^.*\\r\\n\|\*(Task 1)\*\|(.*)\|(.*)\|(.*)\|(.*)\|\\r\\n\|\*(Task 2)\*\|(.*)\|(.*)\|(.*)\|(.*)\|\\r\\n\|\*(Task 3)\*\|(.*)\|(.*)\|(.*)\|(.*)\|\\r\\n\|\*(Task 4)\*\|(.*)\|(.*)\|(.*)\|(.*)\|$"#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"|| ||Du Date||Done on||OK/NOK||Remarks||\r\n|*Task 1*| | | | |\r\n|*Task 2*| | | | |\r\n|*Task 3*| | | | |\r\n|*Task 4*| 15/03/23| | | See document X|"#
let stringRange = NSRange(location: 0, length: testString.utf16.count)
let substitutionString = #"{"ACTION":[{"TITLE":"$1","DUE DATE":"$2","DONE ON":"$3","NOTE":"$5"},{"TITLE":"$6","DUE DATE":"$7","DONE ON":"$8","NOTE":"$10"},{"TITLE":"$11","DUE DATE":"$12","DONE ON":"$13","NOTE":"$15"},{"TITLE":"$16","DUE DATE":"$17","DONE ON":"$8","NOTE":"$20"}]}"#
let result = regex.stringByReplacingMatches(in: testString, range: stringRange, withTemplate: substitutionString)
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