1

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

除了查找和替换字符串“~S~|”之外,我基本上已经知道了 其中所有字符都应按字面意思理解。

我试过以下无济于事:“\~S\~\|” “~S~\|” “~S~|” <-- 这个是松鼠,因为 | 是或在 RegEx 领域

任何的意见都将会有帮助。

4

3 回答 3

6

regex.escape 方法是为这种你不知道哪些字符被认为是特殊字符(元字符)的情况而设计的。

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

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

PS> "this~S~|is~S~|a~S~|dog" -replace [regex]::escape('~S~|')
thisisadog
于 2013-10-09T07:42:27.907 回答
1

你能试试这个:

$string = "this~S~|is~S~|a~S~|dog"
$string -replace '~S~\|',' '
于 2013-10-09T03:51:54.157 回答
1

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

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

例如:

$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
于 2013-10-09T21:47:32.587 回答