Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PowerShell中使用Trim或Replace清除引号中未包含的任何内容_Powershell_Replace_Trim - Fatal编程技术网

在PowerShell中使用Trim或Replace清除引号中未包含的任何内容

在PowerShell中使用Trim或Replace清除引号中未包含的任何内容,powershell,replace,trim,Powershell,Replace,Trim,我正在尝试编写一个脚本,该脚本将从SQL查询生成的结果集中删除除引号中包含的文本以外的所有内容。不确定是“修剪”还是“更换”将执行此操作 以下是结果集的采样: a:5:{s:3:“客户服务”;a:4:{s:15:“客户培训”;b:0;s:11:“付款人” 错误” 我希望它最终看起来像这样: Client Service Client Training Payer Error 在我对PowerShell和RegEx的熟悉程度有限的情况下,我尝试了所有我知道要做的事情,但仍然没有找到一个好的解决方

我正在尝试编写一个脚本,该脚本将从SQL查询生成的结果集中删除除引号中包含的文本以外的所有内容。不确定是“修剪”还是“更换”将执行此操作

以下是结果集的采样:

a:5:{s:3:“客户服务”;a:4:{s:15:“客户培训”;b:0;s:11:“付款人” 错误”

我希望它最终看起来像这样:

Client Service
Client Training
Payer Error
在我对PowerShell和RegEx的熟悉程度有限的情况下,我尝试了所有我知道要做的事情,但仍然没有找到一个好的解决方案

任何帮助都将不胜感激

$s = 'a:5:{s:3:"Client Service";a:4:{s:15:"Client Training";b:0;s:11:"Payer Error";'
将字符串的开头替换为第一个引号,或将最后一个引号替换为字符串的结尾。然后剩下的是:

   Client Service";a:4:{s:15:"Client Training";b:0;s:11:"Payer Error
现在,您不需要的位是“在引号中”,这很容易与
“*?”
匹配,因此将其替换为空格

总的来说,有两个替代方案:

$s -replace '^[^"]*"|"[^"]*$' -replace '".*?"', ' '

Client Service Client Training Payer Error

下面是一个版本,它使用正则表达式将包含引号的字符串捕获到数组中,然后用
-replace
删除引号:

$text = 'a:5:{s:3:"Client Service";a:4:{s:15:"Client Training";b:0;s:11:"Payer Error";'

([regex]::matches($Text, '(")(.*?)(")')).value -replace '"'

毫无疑问,正则表达式一开始就可以获得不带引号的字符串,但我有点像正则表达式的新手。

谢谢你提供的。非常有用!太好了!谢谢你在这方面的帮助。很有魅力!@esat7不用担心,如果你也能投票,那就太好了:)