我正在尝试删除第一个匹配的"三";,但我不确定为什么下面的例子不起作用:
$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"
(