从powershell中的字符串中提取子字符串

时间:2014-06-10 11:45:03

标签: string powershell

我必须编写一个powershell脚本来从输入文件中读取数据。需要从输入文本文件中提取许多数据,其中一个数据是 时间在州:3d 10:20 从上面的数据我怎么才能只提取3d 10:20并分配给变量?

我尝试了下面提到的命令 -

$a= Time In State : 3d 10:20
$b=("$a" -split ':')[1].substring(1,5)

但我没有得到预期的输出。 请提供正确的语法

由于

3 个答案:

答案 0 :(得分:0)

单步:

$a = "Time In State : 3d 10:20"
$a -replace '^.+:\s'

关注您的代码(但请避免这样做):

( -join ( $a -split '(:)')[2..4]).trim()

答案 1 :(得分:0)

另一种选择:

'Time In State : 3d 10:20 ' -split '^.+?:'

 3d 10:20 

答案 2 :(得分:0)

您还可以使用-match和正则表达式将任何匹配项分配给不同的变量,以捕获任何格式相似的内容。如果它与正则表达式匹配,您可以调用$ matches [0] magic变量来获取该子字符串:

$a = 'Time In State : 3d 10:20'
$b = $a -match '[0-9]{1,2}d\s[0-9]{1,2}:[0-9]{1,2}'
if($b)
{
    $matches[0]
}
else
{
    'No Match'
}

3d 10:20