Lets say I have string like so:
foo
}
bar}
}
{baz}
and I only want to match closing braces that are at the start of a line or are preceded by a white space such as one or more tab characters.
So with the above sample, only the braces at line 2 and 4 should be selected (counting from 1)
This first attempt seems to only highlight, the closing brace at line 2, the brace at line 4 is not selected:
"foo
}
bar}
}
{baz}" |Select-String "\n\s?\}" -AllMatches
I tried making the whitespace token optional with ?, but then the brace at line 2 is deselected:
"foo
}
bar}
}
{baz}" |Select-String "\n\s+?\}" -AllMatches
hmm...I am pretty sure I would have succeeded with -replace or -match by now but I really need to get the hang of Select-String.
Use inline option
(?m)to make^(and$) match the start (and end) of each line.Use
[ \t]*to match any run of zero or more (*) spaces or tabs ([ \t])\s*, for matching all whitespace chars., would potentially match across lines, given that newlines are whitespace too.