Индекс соответствия Powershell RegEx всегда одинаков - PullRequest
0 голосов
/ 07 сентября 2018

Я использую следующий фрагмент кода для поиска нескольких системных имен в текстовом файле и сохранения их в массиве.
Теперь мне нужно сохранить позицию матчей, но всегда получать только позицию первого матча.

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

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

        }

            }

           $arr_sysname.index

Мне нужна позиция каждого матча.

1 Ответ

0 голосов
/ 07 сентября 2018

Посмотрите эту демонстрацию:

#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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...