В Powershell есть ли способ сопоставить не жадную строку выбора для сегмента кода, а затем продолжить поиск? - PullRequest
0 голосов
/ 05 мая 2020

Я пытаюсь найти в проекте определенные c экземпляры неработающего кода, но я не совсем знаю, как сегментировать мой поиск, чтобы он соответствовал чему-то не жадному, а затем продолжаю поиск, чтобы удовлетворить условия, которые я ищу.


Код:

$FPheaderAboveBulHR1 = 'name="[^\r\n]*?_HR1_[^\r\n]*?">[^\~]*? name="[^\r\n]*?_BUL_]^\r\n}*?"'

$EndSet = testValue

ls .\ -filter $projectname*.project –recurse | %{if(gc –Encoding UTF8 $_.fullName –Raw | Select-string $FPheaderAboveBulHR1) {(select-string $EndSet –path $_ | Select-Object –property filename, @{name = “FP header with HR1 field has bul below“ ; Expression = {$_.line.trimstart(“ “)}}, LineNumber, Path)}} | Format-Table


Вот разбивка кода, который я использую для соответствия моему выражению.

ls .\ -filter $projectname*.project –recurse | рекурсивно ищет проект по имени и проходит через канал

%{if(gc –Encoding UTF8 $_.fullName –Raw | для каждого объекта, если необработанное содержимое…

Select-string $FPheaderAboveBulHR1withBP) соответствует указанной переменной строке из содержимого

{(select-string $EndSet –path $_ | выберите строка, необходимая для отображения ошибки на экране. Перейти к конвейеру

Select-Object –property filename, @{name = “FP header with HR1 has bul below“ ; Expression = {$_.line.trimstart(“ “)}}, LineNumber, Path)}} | Format-Table выбрать объекты в этой строке: желаемая информация для отображения и отображение информации в таблице


проблема в том, что этот поиск вернет testValue при следующих двух совпадениях:


Тот, который я пытаюсь найти, чтобы исправить.

name="FP_HR1_FP">

---allowed variable line (can be any number of lines based on user input)

---allowed variable line (can be any number of lines based on user input)

name="FP_BUL_FP">


Обнаружено непреднамеренно.

name="FP_HR1_FP">

---allowed variable line(can be any number of lines based on user input)

---allowed variable line(can be any number of lines based on user input)

name="FP_FP">

---allowed variable line(can be any number of lines based on user input)

---allowed variable line(can be any number of lines based on user input)

name="FP_BUL_FP">


Есть ли способ использовать значение имени, чтобы убедиться, что я перехожу от имени к имени только один раз, сохраняя любое количество строк переменных, которые не включают имя между ними?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...