ファイルで正規表現の置換を行うこのスクリプトがあります。私が理解できないのは、返された文字列の改行がすべて削除されている理由です。
サンプル ファイルの内容 (UTF-8、各行の後に CR-LF を含む):
hello
hello
hello
スクリプト:
$content = Get-Content "c:\spikes\regexnewline\regexnewline.txt"
Set-Content "c:\spikes\regexnewline\regexnewline-2.txt" $content # test
$content = [regex]::Replace($content, "ll", "yy") #basic replace
Set-Content "c:\spikes\regexnewline\regexnewline-3.txt" $content
もちろん、 fileregexnewline-2.txt
は入力ファイルの正確なコピーです。しかしregexnewline-3.txt
、最後に 1 つの CR-LF があり、内容が 1 行しかないのはなぜでしょうか?
heyyo heyyo heyyo\CR\LF
明らかに、ここで何かが欠けています。誰でもそれを見つけることができますか?
ところで、 MSDN に記載されているように、regex.Replace で遊んで、 を指定して 4 つの引数でオーバーロードを使用しようとしましRegexOptions
たが、スクリプトはこのメソッドに 4 つの引数のオーバーロードがないと言って失敗します。Powershell は別のバージョンの .Net フレームワークを使用していますか?