使用powershell搜索字符串中的子字符串

时间:2018-06-05 13:44:18

标签: regex powershell

我正在尝试在以下字符串中搜索{json code}

(function(r,t){var a = {json code}; if(...)剩余的js代码}

我正在使用PowerShell,但似乎无法破解它。有人可以帮忙吗?

我尝试了以下选项,并且不太了解正则表达式

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

选项1
$jsonvalue = $text1 -Match 'a={<content>}'; $jsonvalue;

执行后我得到假

选项2
$jsonvalue = $text1 -match "a=(.*)"; $jsonvalue;
执行后我得到了真的

选项3
$jsonvalue = $text1 -match "a=(?<content>.)*;if(" $jsonvalue;

执行后,我得到以下错误

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 :(得分:1)

我觉得这只是您实际数据的表示。没有实际数据,这里是实际答案的表示:

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

关于正则表达式的一些信息。它会查找a={然后匹配任何字符,直到找到};。它将这些保存为子表达式,可以通过$ matches数组访问Powershell中的子表达式。