Неверный шаблон выражения - PullRequest
0 голосов
/ 04 января 2019

Следующий шаблон Regex в PowerShell доставляет мне реальные проблемы. Двойные и одинарные кавычки являются виновниками, но я не знаю, как заставить PowerShell принять его. Как заставить PowerShell успешно принять этот шаблон?

Если я копирую шаблон в переменную, PowerShell жалуется на неожиданный токен после первой кавычки, найденной в шаблоне.

$myRegex = "^param[\s?]*\([\$\sa-zA-Z\=\@\(\)\"\d\,\:\\\_\.\']*\)"

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

$myRegex = "^param[\s?]*\([\$\sa-zA-Z\=\@\(\)\""\d\,\:\\\_\.\']*\)"
$somelongString -replace $myRegex

Сообщение об ошибке:

The regular expression pattern ^param[\s?]*\([\$\sa-zA-Z\=\@\(\)\"\d\,\:\\\_\.\']*\) is not valid.

Обновление 1: По предложению @Dan Farrell я обновил свое регулярное выражение следующим образом:

$myRegex = "^param(\s?)*\([\$\sa-zA-Z\=\@\(\)\""\d\,\:\\\_\.\']*\)"

Обновление 2: Это рабочий пример моего Regex, который я пытаюсь перенести на PowerShell

1 Ответ

0 голосов
/ 04 января 2019

Экранирование _ в регулярном выражении .NET вызывает ошибку. Чтобы использовать " внутри "..." строкового литерала, необходимо экранировать его с помощью обратного кавычка, используйте `". Кроме того, вам нужно только экранировать \ внутри вашего класса персонажа.

Используйте

$myRegex = "^param\s*\([$\sa-zA-Z=@()`"\d,:\\_.']*\)"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...