【问题标题】:Parsing custom arguments in Powershell "-" delimitted在 Powershell 中解析自定义参数“-”分隔
【发布时间】:2010-12-08 05:51:52
【问题描述】:

我有一个字符串

-汽车:“Nissan” -型号:“Dina” -颜色:“浅蓝色” -车轮:“4”

如何提取参数?最初的想法是使用“-”作为分隔符,但是这行不通。

【问题讨论】:

  • 它和PowerShell有什么关系?

标签: regex parsing powershell arguments


【解决方案1】:

使用正则表达式可能是该任务最简单的解决方案。这可以在 PowerShell 中完成:

$text = @'
-car:"Nissan" -Model:"Dina" -Color:"Light-blue" -wheels:"4" -windowSize.Front:"24"
'@

# assume parameter values do not contain ", otherwise this pattern should be changed
$pattern = '-([\.\w]+):"([^"]+)"'

foreach($match in [System.Text.RegularExpressions.Regex]::Matches($text, $pattern)) {
 $param = $match.Groups[1].Value
 $value = $match.Groups[2].Value
 "$param is $value"
}

输出:

car is Nissan
Model is Dina
Color is Light-blue
wheels is 4
windowSize.Front is 24

【讨论】:

  • 谢谢你的工作。不过还有一个额外的要求.. 如果参数如下所示: -car:"Nissan" -Model:"Dina" -Color:"Light-blue" -wheels:"4" -windowSize.Front:"24" - windowSize.Back:"26" 如何更改正则表达式以适应这些情况
  • @Henno,我已经更新了答案,以便它包含新案例。
  • 你太棒了!非常感谢!
猜你喜欢
  • 2016-09-28
  • 1970-01-01
  • 2023-03-04
  • 1970-01-01
  • 1970-01-01
  • 2018-04-30
  • 2014-11-04
  • 2013-08-03
  • 1970-01-01
相关资源
最近更新 更多