PowerShell:替换换行并连接两行



我正在尝试删除第一个匹配的"三";,但我不确定为什么下面的例子不起作用:

$var = 'one two three
four five six
seven'
$var = $var.replace("three`n", 'three ')
$var

期望输出:

one two three four five six
seven

要考虑换行(换行(格式中的变化,请使用-replace运算符和正则表达式r?n以平台/文件格式中立的方式匹配换行:

$var = 'one two three
four five six
seven'
$var -replace 'threer?n', 'three '

正则表达式r?n与Windows格式的CRLF(rn(和Unix格式的LF(仅限n(换行符匹配。

前面使用逐字逐句的正则表达式转义序列。NET正则表达式引擎解释-replace运算符。用可扩展字符串("..."(中的PowerShell转义序列表示,换行格式为`r`n`n
您也可以将最后一条语句表示为$var -replace "three`r?`n", 'three ',但通常最好将逐字逐句字符串('...'(传递给。NET正则表达式引擎,以避免混淆PowerShell预先解释的内容与。NET正则表达式引擎解释

请注意,正是脚本文件的换行格式决定了其中多行字符串文字的换行格式,因此如果脚本文件使用CRLF换行,"three`n"不匹配,因为输入字符串中的LF("`n"(前面有CR("`r"(

相关内容

  • 没有找到相关文章

最新更新