Как упоминалось в комментариях, вам нужно включить модификатор s
, чтобы часть .+?
также соответствовала разрывам строки.
Как упоминает Ансгар, m
здесь не обязателен, но может улучшить start
путем привязки в строке, начинающейся с (?<=^xstart)
$file='C:\Path\to\file.txt'
$raw = Get-Content $file -Raw
$raw = $raw -ireplace '(?s)(?<=start).+?(?=end)', 'YYY'
$raw | Set-Content $file
или
$file='C:\Path\to\file.txt'
$raw = (Get-Content $file -Raw) -ireplace '(?s)(?<=start).+?(?=end)', 'YYY'
$raw | Set-Content $file