import re
regex = re.compile((r"(?xXmi)\n"
r"(?:\n"
r" (?# use non-capture for details in debugging)\n"
r" (?:\n"
r" (?<match>\n"
r" (?# If quoted value)\n"
r" (?<quot_char>(?<!\\)[\"'])\n"
r" (?# Quoted content)\n"
r" (?:\n"
r" (?:\n"
r" (?# Match as many characters that aren't quotation char)\n"
r" (?# or escape char as possible. )\n"
r" (?:(?:(?!\k<quot_char>|\\)).+)\n"
r" (?:\n"
r" (?# Match any/all escape chars that do not have the)\n"
r" (?# quotation char following it. )\n"
r" (?:(?:\\)*(?!\k<quot_char>))?\n"
r" (?# If there is an escape char followed by the quotation)\n"
r" (?# quotation char match them. )\n"
r" (?:[\\]\k<quot_char>)?\n"
r" )*?\n"
r" )\n"
r" )\n"
r" (?<close_quot>\k<quot_char>)\n"
r" |\n"
r" (?# if simple token)\n"
r" (?<basic>[^ \n]+)+\n"
r" )\n"
r" )\n"
r" (?<trail_ws>[ ]+)?\n"
r")"), flags=re.MULTILINE)
test_str = ("-t1a1\n"
"-t2a1 -t2a2\n"
" -t3a1 -t3a2 \n"
"-t4a1 Test1value -t4a2 test4a2value -t4a3 t4a3value\n"
"-t5a1EscQuot \\'t5a1valueESQ\\' -t5a2EscQuot \\\"t5a2valueEDQ\\\"\n"
"-t6a1 \"t6a1value1DQWord1 t6a1value1DQWord1\" -t6a2SQuot 't6a2value1SQWord1 t6a2value1SQWord2 t6a2value1SQWord3 '\n"
"-t7a1SQuotEmpty '' -t7a2DQuotEmpty \"\"\n")
subst = "\\n${match}"
result = regex.sub(subst, test_str)
if result:
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 Python, please visit: https://docs.python.org/3/library/re.html