在Powershell替换逃生Tilde

时间:2013-10-09 00:06:19

标签: regex powershell

我正在使用powershell脚本将文件解析为不同的分隔格式,可以轻松加载到Excel或DB中。

除了找到并替换字符串“~S~ |”之外,我已经得到了它。所有字符都应该用文字表示。

我尝试过以下无效: “\ 382 4 \〜\ |” “〜S〜\ |” “〜S〜|” < - 这个是因为|是或在RegEx土地

任何建议都会有所帮助。

3 个答案:

答案 0 :(得分:6)

regex.escape方法适用于这种情况,您不知道哪些字符被认为是特殊字符(元字符)。

PS> [regex]::escape("~S~|")
~S~\|

你可以看到唯一的元字符是管道符号(例如“|”),并且escape方法为你转义它(在它前面添加了一个反斜杠)。

PS> "this~S~|is~S~|a~S~|dog" -replace [regex]::escape('~S~|')
thisisadog

答案 1 :(得分:1)

你可以试试这个:

$string = "this~S~|is~S~|a~S~|dog"
$string -replace '~S~\|',' '

答案 2 :(得分:1)

我能够解决这个问题。感谢您的所有输入,所有答案都按照您的描述工作。

为了让我在一个带有'find'值的多个实例的非常长的字符串中工作,我最终不得不在它增长时构建字符串。

例如:

$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