我试图在powershell中找到一种方法来删除多个空白
但我发现的是如何在php中实现它。“删除多个空白”
可能会有类似的正则表达式可用
如何在powershell中实现同样的功能
我的绳子是这样的
Xcopy源代码设计
某些行在源和目标之间可能包含多个空格
如果您希望将多个连续的空白字符折叠到一个空格中,则可以使用-replace
运算符执行此操作。鉴于
PS>$beforeReplace='[你好,世界!]'
PS>$更换前
[你好,世界!]
PS>$替换前。长度
29
…您可以这样调用-replace
操作符
PS>$afterReplace=$BeforReplace-replace'\s+','
PS>$后更换
[你好,世界!]
PS>$后更换。长度
19
-replace
的第一个参数是要匹配的正则表达式模式,第二个参数是将替换任何匹配项的文本\s
将匹配一个空格字符,+
指示匹配一个或多个匹配项,因此,换句话说,一个或多个相邻空格字符将替换为单个空格
无空白规范化的替换
如果您不需要将所有空白字符规范化为空格,因此独立的空白字符可以保持不变,那么对于长字符串,可能会看到此变体的性能更好
PS>$afterReplace=$BeforReplace-replace'\s{2,}','
PS>$后更换
[你好,世界!]
PS>$后更换。长度
19
\s{2,}
使用了一个量词,意思是;至少将前面的元素匹配两次;;因此,不会替换独立的空白字符。当输入字符串混合包含空格字符时
PS>$beforeReplace=";1空间:;2空间:;1选项卡:`t;2Tab:`t`t;换行:n;第二行:`n`n&引用;
PS>$更换前
1空间:;2空间:;1选项卡:;2标签:;1新行:
;2新线路:
;
PS>$替换前。长度
57
…请注意两种方法的结果如何不同
PS>$afterReplaceNormalized=$BeforReplace-replace'\s+','
PS>$后置换标准化
1空间:;2空间:;1选项卡:;2标签:;1新行:;第2行:;
PS>$长度
54
PS>$afterReplaceUnnormalized=$beforeReplace-replace'\s{2,}','
PS>$后置换非标准化
1空间:;2空间:;1选项卡:;2标签:;1新行:
;第2行:;
PS>$afterReplaceUnnormalized.长度
54
虽然这两个字符串的长度相同,但非规范化的替换会使单个空格、单个制表符和单个换行空白保持不变。无论相邻的空白字符是否相同,这都是一样的
附加文件
- 输入有关\u比较\u运算符的帮助[Windows PowerShell 2.0][PowerShell(核心)]
- 输入有关正则表达式的帮助[Windows PowerShell 2.0][PowerShell(核心)]
- .NET正则表达式语言-快速参考