| eval tmp_{source_field} = replace({source_field}, /{regex}/, "##SEP##\\1##VAL_SEP##\\2##SEP##")
| eval tmp_{source_field} = filter(split(tmp_{source_field}, "##SEP##"), $row -> match($row, /.*##VAL_SEP##.*/ ))
| eval tmp_{source_field} = map(tmp_{source_field}, $row -> split($row, "##VAL_SEP##" ))
| eval tmp_{source_field} = map(tmp_{source_field}, $row -> json_array(replace(replace(trim($row[0]), /[^\w]/, "_"), /^_+/, ""), trim($row[1], "\r\n\t ")))
| eval tmp_{source_field} = filter(tmp_{source_field}, $row -> $row[1] != "")
| eval tmp_{source_field} = reduce(tmp_{source_field}, json_object(), ($acc, $row)-> if(isnull(json_extract($acc, $row[0])), json_set($acc, $row[0], $row[1]), json_set($acc, $row[0], if(isarray(json_extract($acc, $row[0])), json_append(json_extract($acc, $row[0]), "", $row[1]), json_array(json_extract($acc, $row[0]), $row[1])))))
| flatten tmp_{source_field}
| fields - tmp_{source_field}
