如何使用Powershell正则表达式转换&引用;进入\";?

如何使用Powershell正则表达式转换&引用;进入\";?,powershell,csv,escaping,Powershell,Csv,Escaping,我有一个生成CSV的Powershell脚本。只有它在字符串中使用双引号,而我使用的所有其他软件(无论如何,在Unix世界中)都使用\“inside a string”而不是“”来表示一个双引号 使用Powershell正则表达式,如何将其转换为: """C:\Java\jre8\bin\java"" -Djava.library.path=""C:\some\path\lib"" -classpath ""some;long;classpath"" com.foo.app.Main" 这件事

我有一个生成CSV的Powershell脚本。只有它在字符串中使用双引号,而我使用的所有其他软件(无论如何,在Unix世界中)都使用\“inside a string”而不是“”来表示一个双引号

使用Powershell正则表达式,如何将其转换为:

"""C:\Java\jre8\bin\java"" -Djava.library.path=""C:\some\path\lib"" -classpath ""some;long;classpath"" com.foo.app.Main"
这件事

"\"C:\Java\jre8\bin\java\" -Djava.library.path=\"C:\some\path\lib\" -classpath \"some;long;classpath\" com.foo.app.Main"

我已尝试使用假定的Powershell转义字符(backtick),但无法使转换正常工作。

使用带有正向前瞻零长度断言的正则表达式

$String='"""C:\Java\jre8\bin\java"" -Djava.library.path=""C:\some\path\lib"" -classpath ""some;long;classpath"" com.foo.app.Main"
$String
$String -replace '"(?="[^"])','\'
收益率:

"""C:\Java\jre8\bin\java"" -Djava.library.path=""C:\some\path\lib"" -classpath ""some;long;classpath"" com.foo.app.Main"
"\"C:\Java\jre8\bin\java\" -Djava.library.path=\"C:\some\path\lib\" -classpath \"some;long;classpath\" com.foo.app.Main"

您的回答很有效,谢谢。不幸的是,它没有解决我的特定问题,因为原来字符串中只有一个“值”,但将“值”加倍的是| Export Csv-Path output.Csv。不确定我是否可以在不读取output.Csv并转换它的情况下解决该问题。看起来Csv中的“for”是一个“标准”我想我会在读取CSV的任何进程中删除额外的“值”。