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
会在后面追加一个行结束序列。