gpt4 book ai didi

regex - 删除Powershell中的多个空白

转载 作者:行者123 更新时间:2023-12-03 13:39:31 25 4
gpt4 key购买 nike

我试图在Powershell中找到一种方法来删除多个空白。

但是我发现的是如何在php中做到这一点。 “Removing more than one white-space

可能会有类似的正则表达式可用。

如何在Powershell中实现相同?

我的弦是这样的

Xcopy Source  Desination

某些行在源和目标之间可能包含多个空格。

最佳答案

如果您希望将多个连续的空白字符折叠到一个空格中,则可以使用-replace运算符进行此操作。鉴于...

PS> $beforeReplace = '   [   Hello,   World!   ]   '
PS> $beforeReplace
[ Hello, World! ]
PS> $beforeReplace.Length
29
...您将像这样调用 -replace运算符...
PS> $afterReplace = $beforeReplace -replace '\s+', ' '
PS> $afterReplace
[ Hello, World! ]
PS> $afterReplace.Length
19
-replace的第一个参数是要匹配的正则表达式模式,第二个参数是将替换所有匹配项的文本。 \s将匹配一个空格字符,而 +则指示匹配一个或多个匹配项,换句话说,一个或多个相邻的空白字符将被替换为一个空格。
无需空格标准化即可替换
如果您不需要将所有的空白字符 normalize换成空格,因此可以保留独立的空白字符,那么对于较长的字符串,使用此变体可能会看到更好的性能...
PS> $afterReplace = $beforeReplace -replace '\s{2,}', ' '
PS> $afterReplace
[ Hello, World! ]
PS> $afterReplace.Length
19
\s{2,}使用 quantifier,意思是“至少匹配前面的元素两次”;因此,将不会替换独立的空白字符。当输入字符串包含空白字符混合时...
PS> $beforeReplace = "1Space: ;2Space:  ;1Tab:`t;2Tab:`t`t;1Newline:`n;2Newline:`n`n;"
PS> $beforeReplace
1Space: ;2Space: ;1Tab: ;2Tab: ;1Newline:
;2Newline:

;
PS> $beforeReplace.Length
57
...请注意两种方法的结果如何不同...
PS> $afterReplaceNormalized = $beforeReplace -replace '\s+', ' '
PS> $afterReplaceNormalized
1Space: ;2Space: ;1Tab: ;2Tab: ;1Newline: ;2Newline: ;
PS> $afterReplaceNormalized.Length
54
PS> $afterReplaceUnnormalized = $beforeReplace -replace '\s{2,}', ' '
PS> $afterReplaceUnnormalized
1Space: ;2Space: ;1Tab: ;2Tab: ;1Newline:
;2Newline: ;
PS> $afterReplaceUnnormalized.Length
54
虽然两个都产生相同长度的字符串,但未规范的替换使单个空格,单个制表符和单个换行符空白保持不变。无论相邻的空白字符是否相同,其工作原理都相同。
附加文件
  • 输入help about_Comparison_Operators [Windows PowerShell 2.0] [PowerShell (Core)]
  • 输入help about_Regular_Expressions [Windows PowerShell 2.0] [PowerShell (Core)]
  • .NET Regular Expression Language - Quick Reference
  • 关于regex - 删除Powershell中的多个空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8686816/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com