Поиск подстроки в строке с помощью powershell - PullRequest
0 голосов
/ 05 июня 2018

Я пытаюсь найти {json code} в следующей строке

(функция (r, t) {var a = {код json}; если (...) оставшийся код js}

Яиспользуя PowerShell, но, похоже, просто не могу его взломать. Кто-нибудь может помочь?

Я пробовал следующие варианты и просто не знаю достаточно регулярных выражений

$text1 = "<script>(function(r,t){var a={json code};if(...)remaining js code}</script>";

Опция 1
$jsonvalue = $text1 -Match 'a={<content>}'; $jsonvalue;

При выполнении я получаю False

Опция 2
$jsonvalue = $text1 -match "a=(.*)"; $jsonvalue;
При исполнении я получаю True

Вариант 3
$jsonvalue = $text1 -match "a=(?<content>.)*;if(" $jsonvalue;

При выполнении я получаю True со следующей ошибкой

parsing "a=(?<content>.)*;if(" - Not enough )'s. RegEx.ps1:4 char:1 + $jsonvalue = $text1 -match "a=(?<content>.)*;if(" + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : OperationStopped: (:) [], ArgumentException + FullyQualifiedErrorId : System.ArgumentException

1 Ответ

0 голосов
/ 06 июня 2018

У меня такое ощущение, что это просто представление ваших реальных данных.Без фактических данных, вот представление фактического ответа:

$t = '(function(r,t){var a={json code};if(...)remaining js code}'
$t -match 'a={(.+)};'
$code = $matches[1]

Небольшая информация о регулярном выражении.Он ищет a={, затем сопоставляет любые символы, пока не найдет };.Он сохраняет их как подвыражение, к которому в Powershell можно получить доступ через массив $ match.

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