Ожидаемое поведение.
Оператор -replace
удаляет все непересекающиеся совпадения из входной строки , сохраняя всех несопоставленных частей в результате.
'aasdf123 456' -replace '([\d]+) .*', '$1'
вернет assdf123
, потому что ([\d]+) .*
(равный (\d+) .*
) соответствует и записывает в Группу 1 одну или несколько цифр, затем совпадает с пробелом, а затем с остальной частью строки, а затем все совпадение (здесь 123 456
) заменяется содержимым группы 1, 123
, таким образом, в результате операции -replace
сохраняется assdf123
.
Ваше утверждение, что regex101 дает другой результат, неверно: оно дает такой же результат :
Даже если вы посмотрите на панель MATCH INFORMATION
, есть два значения: полное соответствие 123 456
и значение группы 1 123
. Таким образом, нет никакого расхождения вообще.
Чтобы получить всего 123
, вы можете использовать решение, описанное в Как получить захваченные группы из Select-String?