标题: [问题求助] PowerShell把单独一行中的-替换成+ [打印本页]
作者: 小白龙 时间: 2022-11-21 21:58 标题: PowerShell把单独一行中的-替换成+
把单独一行中的-替换成+ 下面的代码没有效果- $s = @'
- Key 1
- -
- Hello 1
- World 1
- ---
- Key 2
- -
- Hello 2
-
- World 2
- ---
- Key 3
- -
- Hello 3
- World 3
- '@
-
- $s -replace '(?m)^-$', '+'
复制代码
下面把单独ab一行的替换也不灵- cls
- $s = @'
- Key 1
- ab
- Hello 1
- World 1
- ab cd
- '@
-
- $s -replace '(?m)^ab$', '+'
复制代码
作者: WHY 时间: 2022-11-21 22:54
https://learn.microsoft.com/zh-c ... ions#multiline-mode
默认情况下,$ 仅与输入字符串的末尾匹配。 如果指定了 RegexOptions.Multiline 选项,它将与换行符 (\n) 或输入字符串的末尾匹配。 但是,它并不与回车符/换行符的组合匹配。 若要成功匹配它们,使用子表达式 \r?$ 只替代 $。
- $s -replace '(?m)^ab\r?$', '+'
复制代码
或者- $s -replace '(?m)^ab(?=\r?\n|$)', '+'
复制代码
在PowerShell脚本中,行尾为\r\n,$不能匹配\r,只匹配\n,所以失败。
在PowerShell控制台,行尾为\n,$可以成功匹配。
作者: 小白龙 时间: 2022-11-21 23:02
回复 2# WHY
多谢大佬
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |