从PowerShell中的正则表达式搜索中获取捕获的数组

时间:2018-11-26 05:05:07

标签: regex powershell

假设我有这个字符串:

"14 be h90 bfh4"

我有这个正则表达式模式:

"(\w+)\d"

在PowerShell中,如何获取内容为{"h", "bfh"}的数组?

3 个答案:

答案 0 :(得分:2)

您想捕获一个或多个字母,后跟一个数字,因此要捕获的正则表达式就是这个,

[a-zA-Z]+(?=\d)

相同的powershell代码将是这样,

$str = "14 be h90 bfh4"
$reg = "[a-zA-Z]+(?=\d)"
$spuntext = $str | Select-String $reg -AllMatches |
            ForEach-Object { $_.Matches.Value }
echo $spuntext

免责声明::我几乎不了解Powershell脚本语言,因此您可能需要调整一些代码。

答案 1 :(得分:1)

缩短版本:

@(Select-String "[a-zA-Z]+(?=\d)" -Input "14 be h90 bfh4" -AllMatches).Matches.Value

答案 2 :(得分:1)

如其他答案所示,有多种方法可以给猫皮剥皮。还有一种方法是使用.Net

提供的[regex]对象
$regex = [regex] '([a-z]+)(?=\d+)'
$regex.Matches("14 be h90 bfh4") | Select Value