PowerShell正则匹配
2018-11-27
PowerShell正则匹配
不得不说微软对PS的支持力度很大,PS的正则是在shell中最舒服的。同样CSV,JSON,XML各种处理PS都可以做的很好。 比如说我们有个需求,把”20:39”这样分:秒格式转换为秒,再补两个小数点,PS怎么做呢?
function getsec {
param (
$min_sec
)
$min_sec -match "(\d+):" > $null
$minute = $Matches[1]
$min_sec -match ":(\d+)" > $null
$second = $Matches[1]
$sec = "{0}.00" -f ([int]($minute)*60+[int]($second))
return $sec
}
- 字符串-match参数进行正则匹配
- 因为-match对产生一个True或者False的输出,而PS默认把所有输出作为返回值,我不想要,所以重定向到$null,这个语法> $null就是Write-Null这个cmdlet的语法糖。
- $matches是正则的自动变量,$matches[0]是整个匹配串,$matches[1]是括号内的内容,通常我们取$matches[1]
- 字符串的-f就是-format,格式化字符串
getsec "20:39"
#1239.00