Powershell Regex help in extracting text between strings
- by vivekeviv
i Have an arguments like the one below which i pass to powershell script
-arg1 -abc -def -arg2 -ghi -jkl -arg3 -123 -234
Now i need to extract three strings without any whitespace
string 1: "-abc -def"
string 2: "-ghi -jkl"
string 3: "-123 -234"
i figured this expression could do it. But this doesnt seem to work.
$args -match '-arg1(?'arg1'.*?) -arg3(?'arg3'.*?) -arg3(?'arg3'.*)'.
THis should return $matches['arg1'] etc. So whats wrong in above expression. Why do i get an error as shown below
runScript.ps1 -arg1 -abc -def -arg2 -ghi -jkl -arg3 -123 -234
Unexpected token 'arg1'.?) -arg2
(?'arg2'.?) -arg3 (?'arg3'.)'' in
expression or statement. At
G:\powershell\tools\powershell\runTest.ps1:1
char:71
+ $args -match '-arg1 (?'arg1'.?) -arg2 (?'arg2'.?) -arg3 (?'arg3'.)' <<<<
+ CategoryInfo : ParserError: (arg1'.?) -arg2...g3
(?'arg3'.)':String) [],
ParseException
+ FullyQualifiedErrorId : UnexpectedToken
and also the second question is how do i make arg1 or arg2 or arg3 optional?
The argument to script can be
-arg2 -def -ghi.
I'll take some default values for arg(1|2|3) that is not mentioned.
Thanks