我在 Powershell 中使用 Select-String 进行了很多正则表达式匹配。
例如,最简单也可能是最常见的匹配,一个 IPv4 地址:
$regex = \b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b
现在,如果我要在一行中匹配这个:
$输出=`
“Blah blah blah,202.100.100.9,你要匹配这行中间的IP,
但不在这一行,因为 '2.a.3.one' 不是有效的 IPv4 地址”
然后我做:
$output | Select-String $regex
它会给我整条线。
我真的不能以原始形式使用它。
但是,如果我使用这个:
$output | Select-String $regex | %{$_.Matches} | %{$_.Value}
它只会给我 IP 地址,这很棒。
我的问题是:
有没有更简单的方法来做到这一点?
我宁愿不打字 | %{$ .Matches} | %{$ .Value} 每次我只想抓取一个特定的字符串。