Вам необязательно нужен обходной путь,
, непосредственно использующий класс отрицанных символов, также подойдет:
$RE = [regex]'.*[^_-]\.[^_-].*'
@"
foo.bar
foo_.bar
foo._bar
foo-.bar
foo.-bar
"@ -split '\r?\n' | ForEach-Object {
if ($_ -match $RE){
"{0} matches `$RE" -f $_
} else {
"{0} doesn't match `$RE" -f $_
}
}
Пример вывода:
foo.bar matches $RE
foo_.bar doesn't match $RE
foo._bar doesn't match $RE
foo-.bar doesn't match $RE
foo.-bar doesn't match $RE