解析没有空格的算术计算

时间:2016-02-03 21:43:28

标签: string parsing powershell

我正准备在PowerShell中编写一个计算器。 问题是,我将整个计算存储在一个变量中。

这是一个例子:

$test = '123+456'

我希望整个变量分为3个部分,“123”,“+”和“456”。

任何人都知道如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

您可以使用正则表达式capturing groups。一种方法是使用匹配运算符和$ matches变量(注意:正则表达式示例允许使用+和 - 符号。要添加其他运算符,请在括号之间添加它们):

$test = '123+456'
$test -match "(\d+)([+-])(\d+)"

Write-Host "Left operand = $($matches[1])"
Write-Host "Operator = $($matches[2])"
Write-Host "Right operand = $($matches[3])"

另一种方法是使用RegEx对象上Match方法返回的组:

$test = '123+456'
$regEx = [regex]"(\d+)([+-])(\d+)"

$groups = $regEx.Match($test).Groups

Write-Host "Left operand = $($groups[1].Value)"
Write-Host "Operator = $($groups[2].Value)"
Write-Host "Right operand = $($groups[3].Value)"

答案 1 :(得分:2)

我怀疑这回答了你的问题而且它更像是一个FYI。根据您对计算的处理,您不需要划分字符串组件。

PS D:\temp> $test = '123+456'
Invoke-Expression $test
579