返回列表 发帖

[问题求助] PowerShell把单独一行中的-替换成+

把单独一行中的-替换成+ 下面的代码没有效果
$s = @'
Key 1
-
Hello 1
World 1
---
Key 2
-
Hello 2
World 2
---
Key 3
-
Hello 3
World 3
'@
$s -replace '(?m)^-$', '+'COPY
下面把单独ab一行的替换也不灵
cls
$s = @'
Key 1
ab
Hello 1
World 1
ab cd
'@
$s -replace '(?m)^ab$', '+'COPY

https://learn.microsoft.com/zh-c ... ions#multiline-mode
默认情况下,$ 仅与输入字符串的末尾匹配。 如果指定了 RegexOptions.Multiline 选项,它将与换行符 (\n) 或输入字符串的末尾匹配。 但是,它并不与回车符/换行符的组合匹配。 若要成功匹配它们,使用子表达式 \r?$ 只替代 $。
$s -replace '(?m)^ab\r?$', '+'COPY
或者
$s -replace '(?m)^ab(?=\r?\n|$)', '+'COPY
在PowerShell脚本中,行尾为\r\n,$不能匹配\r,只匹配\n,所以失败。
在PowerShell控制台,行尾为\n,$可以成功匹配。
1

评分人数

TOP

回复 2# WHY


   多谢大佬

TOP

返回列表