PowerShell 技能连载 - 拆分而不丢失字符

拆分文本时,通常会丢失拆分字符。这就是为什么这个例子中的反斜杠丢失的原因:

1
2
3
4
PS> 'c:\test\file.txt' -split '\\'
c:
test
file.txt

重要提示:请注意 -split 运算符需要一个正则表达式。如果你想在反斜杠处拆分,因为反斜杠是正则表达式中的一个特殊字符,你需要对它进行转义。以下调用告诉您需要转义的内容:提交要使用的文字文本。结果是转义的正则表达式文本:

1
2
PS> [regex]::Escape('\')
\\

如果你想拆分而不丢失任何字符,你可以使用所谓的先行断言和后行断言。以下代码在一个反斜杠分割(不删除它):

1
2
3
4
PS> 'c:\test\file.txt' -split '(?<=\\)'
c:\
test\
file.txt

以下代码在每个反斜杠之前拆分:

1
2
3
4
PS> 'c:\test\file.txt' -split '(?=\\)'
c:
\test
\file.txt

PowerShell 技能连载 - 拆分而不丢失字符

http://blog.vichamp.com/2021/07/06/splitting-without-losing/

作者

吴波

发布于

2021-07-06

更新于

2022-07-06

许可协议

评论