我正在使用PowerShell腳本將文件解析爲可輕鬆加載到Excel或DB中的不同分隔格式。Powershell中的Escape Tilde替換
我已經得到它主要是想法除了發現和替換字符串「〜S〜|」所有角色應該被視爲文字。
我試過以下無效: 「\〜S \〜\ |」 「〜S〜\ |」 「〜S〜|」 < - 自從|之後,這個就變成了squirish是或正RegEx土地
任何建議將是有幫助的。
我正在使用PowerShell腳本將文件解析爲可輕鬆加載到Excel或DB中的不同分隔格式。Powershell中的Escape Tilde替換
我已經得到它主要是想法除了發現和替換字符串「〜S〜|」所有角色應該被視爲文字。
我試過以下無效: 「\〜S \〜\ |」 「〜S〜\ |」 「〜S〜|」 < - 自從|之後,這個就變成了squirish是或正RegEx土地
任何建議將是有幫助的。
的regex.escape方法是專爲這種,你不知道哪些字符被視爲特殊(元字符)的情況。
PS> [regex]::escape("~S~|")
~S~\|
你可以看到,唯一的元字符是管道符號(例如「|」),而遁法逃脫它爲您(添加在它前面一個反斜槓)。
PS> "this~S~|is~S~|a~S~|dog" -replace [regex]::escape('~S~|')
thisisadog
你可以試試這個:
$string = "this~S~|is~S~|a~S~|dog"
$string -replace '~S~\|',' '
我解決了這個問題。感謝您的所有輸入,所有答案都如您所描述的那樣工作。
爲了讓我得到這個工作在一個非常長的字符串與'查找'值的多個實例我最終不得不建立字符串,因爲它增長。
例如:
$tString = $_
$tString = $tString -replace 'Name:', ''
$tString = $tString -replace 'Id:', ''
$tString = $tString -replace 'Administrative group:', ''
$tString = $tString -replace 'Administrative class\(es\):', ''
$tString = $tString -replace 'Primary group:', ''
$tString = $tString -replace 'Session group:', ''
$tString = $tString -replace '~S~([^-]+)\|', '$1|'
$tString = $tString -replace ';\|', ';'
return $tString
該選擇的唯一的元字符是'|'。下面的正則表達式將匹配確切的序列:'〜S〜\ |' –
這在控制檯中可以正常工作,但通過具有多個實例的長字符串的腳本跳過了一些。 – chonerman