У меня есть следующий PowerShell сценарий:PowerShell не регулярное выражение работает
$SCRIPTNAME = "myfile.js"
$SUBJECT = Get-Content $SCRIPTNAME | Out-String
if ($SUBJECT -match ".*/// COMMENT.*?$(.*)")
{
echo $matches[1];
}
$Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown');
Это порождает следующую ошибку (я пытаюсь использовать регулярное выражение группы захвата, но не работает):
.* : The term '.*' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the
spelling of the name, or if a path was included, verify that the path is correct and try again.
At C:\Users\User\Desktop\install.ps1:21 char:39
+ if ($SUBJECT -match ".*/// COMMENT.*?$(.*)")
+ ~~
+ CategoryInfo : ObjectNotFound: (.*:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Почему у него проблемы с частью .*
второй группы захвата?
У вас есть конец строки якоря '$' перед ним, которые могут быть причиной проблем. Либо выйдите из него, если хотите буквальный '$' или переместите его в конец шаблона. – arco444
@ arco444 Я попытался поставить '\ $' вместо этого, но это все равно вызывает ту же ошибку. – Alexandru
@ arco444 Собственно, я избежал внутренних скобок с '\ (' и '\)' ... и я думаю, что это действительно могло сработать и/или было проблемой. – Alexandru