Powershell RegEx匹配索引始终相同

时间:2018-09-07 12:28:59

标签: regex powershell

我正在使用以下代码段在文本文件中搜索多个系统名称,并将它们保存在数组中。
现在,我需要保存比赛的位置,但总是只获得第一个比赛的位置。

$pattern_sysname = '(?<=Computername).+?($)'
Get-Content $path | Foreach {if ([Regex]::IsMatch($_, $pattern_sysname)) {

           $arr_sysname += [Regex]::Match($_, $pattern_sysname)

        }

            }

           $arr_sysname.index

我需要每场比赛的位置。

1 个答案:

答案 0 :(得分:0)

观看此演示:

#demo data
@'
Computername12
This is Computername1
ComputernameABC
NotMatched
'@ | out-file regex.test

$pattern_sysname = '(?<=Computername).+?$'

Select-String -Path regex.test -Pattern $pattern_sysname -AllMatches |
  select LineNumber,@{N='OffsetInLine';E={$_.Matches[0].Index}}

结果:

LineNumber OffsetInLine
---------- ------------
         1           12
         2           20
         3           12