import re
regex = re.compile((r"(((?# FIRST TYPE OF ARGS\\n"
r")(?#start arg)(\"|'|`)(?#\\n"
r")(?#arg)(?<arg>(?# whole repeat pattern)((?!\3)(?(?!\\).|..))*)(?#\\n"
r")(?#end arg)\3(?#\\n"
r"))|((?# SECOND TYPE OF ARGS\\n"
r")(?#start arg)(^|\s+)(?#\\n"
r")(?#arg)(?<arg_>(?#whole repeat pattern)((?!\s|$)(?(?!\\).|..))+)(?#\\n"
r")))(?#\\n"
r"skipping trailing whitespaces)(\s|^|$)*(?=(\s|^|$|\"|'|`))"), flags=re.MULTILINE)
test_str = (" arg0\\ \\ \\\\ \"arg1\\\"\\\"\" \"arg2\\\"\\\\\"\"arg3 \\\"\" 'arg4\"arg4\"' arg5 arg6 \n\n"
" space_bef_and_aft_even_arg0 arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 \n"
" space_bef_and_aft_odd__arg0 arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 \n"
"space_aft_even__________arg0 arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 \n"
"space_aft_odd___________arg0 arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 \n"
" space_bef_even_________arg0 arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9\n"
" space_bef_odd__________arg0 arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8\n"
"nospace_even____________arg0 arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9\n"
"nospace_odd_____________arg0 arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8\n\n"
" multispace______________arg0 arg1 arg2 arg3 arg4 \n\n\n"
" pbm0 pbm1 pbm2 \n"
"\"pbm0 pbm0\" pbm1 \n"
"\"pbm0 pbm0\" pbm1 \n\n"
" C:\\ProgramData\\Anaconda3\\python.exe C:\\ProgramData\\Anaconda3\\cwp.py C:\\ProgramData\\Anaconda3 C:\\ProgramData\\Anaconda3\\python.exe C:\\ProgramData\\Anaconda3\\Scripts\\jupyter-notebook-script.py \"%USERPROFILE%/\" \n\n"
" (?(?=\\2)(?(?=($|^))true|false)|false) . \n\n\n\n\n"
"(?:(?(?!\\3|\\\\).|(?=\\\\)..))*\n\n"
"((?!\\s|$)(?(?!\\\\).|..))*)")
matches = regex.finditer(test_str)
for match_num, match in enumerate(matches, start=1):
print(f"Match {match_num} was found at {match.start()}-{match.end()}: {match.group()}")
for group_num, group in enumerate(match.groups(), start=1):
print(f"Group {group_num} found at {match.start(group_num)}-{match.end(group_num)}: {group}")
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