我正准备在PowerShell中编写一个计算器。 问题是,我将整个计算存储在一个变量中。
这是一个例子:
$test = '123+456'
我希望整个变量分为3个部分,“123”,“+”和“456”。
任何人都知道如何解决这个问题?
答案 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