Powershell regex для пути к файлу - PullRequest
0 голосов
/ 16 февраля 2019

Я хочу найти регулярное выражение для \\mudit.bah.*[ps1|bat], которое означает, что путь может быть как \\mudit.bah.xyz123.ps1 или \\mudit.bah.xyz123.bat xyz123 может быть любым.Я использую https://rextester.com/tester и пробую это, однако я могу сделать до \\{2}mudit.bah..Я не уверен, как использовать для *, который может быть несколько символов с .(dots) или без .(dots).Любая помощь в этом очень ценится.

Ответы [ 2 ]

0 голосов
/ 16 февраля 2019

для соответствия регулярному выражению, которое вы запрашивали, используйте:

^ mudit.bah. *. (Ps1 | bat)

get-childitem | Where-Object {$_.Name -match "^mudit\.bah.*.(ps1|bat)"}

Это позволит получить файлы, начинающиеся с mudit.bah.,и заканчивается в PS1 или летучая мышь.. * После 'bah' будет соответствовать любому символу, включая цифры и символы.

Для этого без регулярного выражения:

Get-ChildItem | Where-Object {($_.Name -like ("mudit.bah." + "*" + ".ps1")) -or ($_.Name -like ("mudit.bah." + "*" + ".bat"))} 
0 голосов
/ 16 февраля 2019

Прежде всего, [ps1|bat] соответствует одному символу, p, s, 1, b, a или t.Чтобы создать группу, которая соответствует ps1 или bat, вам понадобится группирующая конструкция, (ps1|bat) или (?:ps1|bat) (группа без захвата).

Чтобы соответствовать любому символу столько раз, сколько возможнокроме новой строки, вы можете использовать .*.Чтобы ограничить его любым символом, кроме точки, используйте класс символов с отрицанием [^.].Обратите внимание, что [^.]* будет соответствовать 0 или более символам, отличным от точки, в то время как [^.]+ будет соответствовать 1 или более.

Следовательно, вы можете использовать это регулярное выражение, чтобы разрешить любые символы от \\mudit.bah. до ps1или bat:

^\\{2}mudit\.bah\..*\.(?:ps1|bat)$

Или с ограничением только одной без точечной части между ними:

^\\{2}mudit\.bah\.[^.]*\.(?:ps1|bat)$

См. regex demo .

Подробности

  • ^ - начало строки
  • \\{2} - две обратные косые черты
  • mudit\.bah\.- подстрока mudit.bah.
  • [^.]+\. - любые 1+ символов, кроме ., а затем точка
  • (?:ps1|bat) - либо ps1, либо bat
  • $ - конец строки.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...