Regex 为什么正则表达式模式\r\n(?=$)在powershell中不起作用?

Regex 为什么正则表达式模式\r\n(?=$)在powershell中不起作用?,regex,powershell,regex-lookarounds,Regex,Powershell,Regex Lookarounds,我有一个文本文件,我想删除此文件中的最后一个换行符: 在Powershell中使用以下正则表达式: (Get-Content .\test.txt -Raw) -replace ('\r\n(?=$)', '') | Set-Content .\test.txt 但这是行不通的 我已经尝试了正则表达式模式:\r\n(?=$)在记事本++和Java中被“”替换,它在那里工作 如何使其在Powershell中工作?您需要将EOL转换为适当的格式。Linux和Dos具有不同的行尾参数,JSON使用

我有一个文本文件,我想删除此文件中的最后一个换行符:


在Powershell中使用以下正则表达式:

(Get-Content .\test.txt -Raw) -replace ('\r\n(?=$)', '') | Set-Content .\test.txt
但这是行不通的

我已经尝试了正则表达式模式:\r\n(?=$)在记事本++和Java中被“”替换,它在那里工作


如何使其在Powershell中工作?

您需要将EOL转换为适当的格式。Linux和Dos具有不同的行尾参数,JSON使用Linux。

为什么不直接使用它?
Get Content
已经在
\r?\n
上拆分,因此您操作的输出实际上不会包含换行符。听起来你想
。|设置内容-非WLINE
though@MathiasR.Jessen
-NoNewline
开关完全符合我的要求。@MathiasR.Jessen但我不理解你的第一点,因为当我尝试用
('\r\n','')
替换所有换行符时,除了最后一个换行符外,它都能完成任务。因此我认为
-Raw
开关通过将换行符放入字符串中来忽略换行符,但保留它并使其可供regex访问。因此,最后的问题是为什么
('\r\n(?=$)
不起作用。请您解释一下,好吗?
-replace
可以很好地删除换行符,但是
Set Content
会在后面追加一个行结束序列。