You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell使用正则提取IP转MD5时出现多余输出如何解决?

问题原因

你遇到的多余输出由两个问题共同导致:

  1. 正则表达式中使用了默认的捕获分组,所有被()包裹的规则片段都会生成独立的捕获结果,和完整匹配一起返回到Groups集合中,你看到的41、空值都是分组捕获的片段内容
  2. 遍历逻辑直接遍历了Groups集合的所有项,没有只取完整匹配的分组

解决方案

第一步:修改正则为非捕获分组

把所有不需要单独提取的分组改为非捕获格式(?:xxx),避免生成多余的捕获结果,修改后的正则为:
\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(?:\.|$)){4}\b

第二步:调整遍历逻辑

[regex]::Matches返回的是所有匹配结果的集合,每个匹配结果的Groups[0]固定为完整匹配的内容,直接提取即可。


修正后完整代码

$s = "IPA:10.51.5.41"
$q="\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(?:\.|$)){4}\b"
$matches = [regex]::Matches($s, $q)

# 遍历所有匹配到的完整IP
foreach ($match in $matches) {
    $ip = $match.Groups[0].Value
    Write-Host "num is $ip"
    
    $md5 = New-Object -TypeName System.Security.Cryptography.MD5CryptoServiceProvider
    $utf8 = New-Object -TypeName System.Text.UTF8Encoding
    $hash = [System.BitConverter]::ToString($md5.ComputeHash($utf8.GetBytes($ip)))
    Write-Host "hash is $hash"
}

输出结果

num is 10.51.5.41
hash is AE-B5-C4-0C-27-83-74-33-55-E4-6B-A2-BE-5A-35-F6

内容的提问来源于stack exchange,提问作者MarksBogdanovics

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 01:54:01