Звездочки в регулярном выражении не ведут себя так же, как в командах перечисления файловой системы.В своем нынешнем виде ваше регулярное выражение ищет подчеркивание, повторяется ноль или более раз, за которым следует любой символ (представленный в регулярном выражении точкой).Таким образом, регулярное выражение находит нулевые подчеркивания прямо в начале строки, затем находит 'a', и это совпадает с возвращаемым значением.
Сначала исправьте этот бит:
'_*.'
Становится«подчеркивание, за которым следует любое количество символов, за которым следует буквальный период».«Буквальный период» означает, что нам нужно выйти из периода в регулярном выражении, используя \.
, запоминание этого периода означает любой символ:
'_.*\.'
_
подчеркивание .*
любое количество символов \.
буквальный период
Возвращает:
_XYZ.
Итак, не далекоoff.
Если вы хотите вернуть что-то между символами, вам нужно использовать группы захвата.Поставьте круглые скобки вокруг бита, который вы хотите сохранить:
'_(.*)\.'
Затем вам нужно использовать группы регулярных выражений PowerShell, чтобы получить значение:
[regex]::match($inpFiledev ,'_(.*)\.').Groups[1].Value
, которое возвращает: XYZ
Число 1 в Группах [1] означает только первую группу захвата, вы можете добавить столько выражений, сколько захотите, используя больше скобок, но в этом случае вам нужна только одна.