我有一个带路径名的文本文档,我想删除每个" C:\"。 我尝试使用
get-content file.txt | %{$_-replace 'C:\', ""}
我收到错误,字符串无效。
然后我尝试了严肃的口音:
get-content file.txt | %{$_-replace 'C:`\', ""}
还有单引号:
get-content file.txt | %{$_-replace "C:'\'", ""}
似乎"逃避" Powershell的角色不会在这个角色上工作。
答案 0 :(得分:2)
正斜杠/
\
是正则表达式的特例(我的意思是-match
或-notmatch
或-replace
使用的模式),使用\\
来匹配那个角色。
%{$_-replace 'C:\\', ""}
这是因为正则表达式使用反斜杠作为特殊字符,例如\s
表示任何空白字符,\d
表示任何数字。
答案 1 :(得分:2)
要添加到kubanczyk的答案,另一种方法是使用Regex Escape method。
例如:
%{$_-replace [regex]::Escape("C:\"), ""}
这将转义字符串中的任何特殊字符。
答案 2 :(得分:1)
这是Split-Path
-NoQualifer
参数的目的之一。
PS C:\> "C:\Windows\Notepad.exe" | Split-Path -NoQualifier
\Windows\notepad.exe