Вы можете использовать следующее регулярное выражение вместо, где -
символы совпадают, только если перед ними не стоит слово char:
$values -replace '\B-','$'
Или, если вы хотите заменить только -
, которому предшествует пробел или начало строки:
$values -replace '(?<!\S)-','$'
Здесь \B
соответствует любому местоположению, кроме границы слова (т. Е. Здесь, -
соответствует только тогда, когда ему не предшествуют буква, цифра или _
) и отрицательный знак (?<!\S)
lookbehind соответствует местоположению в строке, которое является либо началом строки, либо предшествует пробелу.
Обратите внимание, что замена может быть либо '$'
, либо '$$'
(литерал $
в замене будет проанализирован здесь как символ $
, но в случае замены на цифру $
+ вы придется бежать $
с другим $
).
См. Демоверсию regex .