使用powershell将字符串转换为字典格式的正则表达式

时间:2014-04-14 07:33:31

标签: regex powershell

我有一个字符串,如下所示

$mystring="t={p:391C4D8E-9A45-42BF-9EF2-22CC5AFD941F,q:a&b,r:rut_ggrpg-1x,a:123.c.in/dev1}"

我想使用reular表达式将其转换为以下格式

t={'p':'391C4D8E-9A45-42BF-9EF2-22CC5AFD941F','q':'a&b','r':'rut_ggrpg-1x','a':'123.c.in/dev1'}"

我使用以下代码尝试了它,但它没有工作

$mystring -replace '([^{,]+):([^,}])+',"'`$1':'`$2'"

2 个答案:

答案 0 :(得分:1)

试试这个 -

Regex   -  ([^{,:]+)\:([^,}]+)
Replace -  '$1':'$2'

演示here

答案 1 :(得分:1)

这样的事情应该有效:

$mystring -replace '\{',"{'" -replace '\}',"'}" -replace '([:,])',"'`$1'"

第一个替换('\{',"{'",即\{{')替换了一个开头的花括号,后面有一个大括号,后面跟一个引号。第二个替换('\}',"'}",即\}'})替换一个结束花括号,其右括号括起一个单引号。最后一个替换('([:,])',"'`$1'",即([:,])'$1')用单引号之间的冒号/逗号替换所有冒号和逗号。

PS C:\> $s = "t={p:391C4D8E-9A45-42BF-9EF2-22CC5AFD941F,q:a&b,r:rut_ggrpg-1x,a:123.c.in/dev1}"
PS C:\> $s -replace '\{',"{'" -replace '\}',"'}" -replace '([:,])',"'`$1'"
t={'p':'391C4D8E-9A45-42BF-9EF2-22CC5AFD941F','q':'a&b','r':'rut_ggrpg-1x','a':'123.c.in/dev1'}