如何將黑斜線視為對正則運算式不特殊?
[string]$users = "C:\Users\dude\"
[string]$path = "C:\Users\dude\project1\project2"
$i2 = $path -replace $users, ".\"
資訊:
The regular expression pattern C:\Users\dude\ is not valid.
char:2
$i2 = $item -replace "$users", ""
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CategoryInfo : InvalidOperation: (C:\Users\dude:String) [],
RuntimeException
uj5u.com熱心網友回復:
如果您不需要通過正則運算式模式搜索特殊內容,則可以避免使用正則運算式:
cls
$users = "C:\Users\dude\"
$path = "C:\Users\dude\project1\project2"
$i2 = $path.Replace($users, ".\")
$i2
# .\project1\project2
順便說一句,如果老兄- 是您當前的用戶,您可以使用更簡單的代碼:
cls
$path = "C:\Users\dude\project1\project2"
$i2 = $path.Replace($HOME, ".")
$i2
# .\project1\project2
uj5u.com熱心網友回復:
Mathias R. Jessen 的有用回答按您的要求回答了您的問題。
退一步:您的任務涉及從存盤在中的路徑中洗掉逐字前綴,因此您可以簡單地執行以下操作:$users$path
'.\' $path.Substring($users.Length) # -> '.\project1\project2'
如果您確實需要使用正則運算式并且想要前綴匹配(從輸入字串的開頭匹配),通常建議將模式錨定在字串 ( ^)的開頭(即使在這種特殊情況下沒有誤報的風險;錨定還有效地防止了尋找多個匹配項的嘗試):
$path -replace ('^' [regex]::Escape($users)), '.\'
uj5u.com熱心網友回復:
通過逃避他們:
$path = "C:\Users\dude\project1\project2"
$users = "C:\Users\dude\"
$pattern = [regex]::Escape($users)
$i2 = $path -replace $pattern, ".\"
[regex]::Escape將自動轉義任何帶有前面的潛在元字符\:
PS ~> [regex]::Escape("C:\Users\dude")
C:\\Users\\dude
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/333065.html
標籤:电源外壳
