在PowerShell中使用Trim或Replace清除引号中未包含的任何内容
我正在尝试编写一个脚本,该脚本将从SQL查询生成的结果集中删除除引号中包含的文本以外的所有内容。不确定是“修剪”还是“更换”将执行此操作 以下是结果集的采样: a:5:{s:3:“客户服务”;a:4:{s:15:“客户培训”;b:0;s:11:“付款人” 错误” 我希望它最终看起来像这样:在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的熟悉程度有限的情况下,我尝试了所有我知道要做的事情,但仍然没有找到一个好的解决方
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不用担心,如果你也能投票,那就太好了:)