【发布时间】:2014-07-21 11:32:40
【问题描述】:
这只是一个简短的问题,因为我无法处理。 我有一个这样的示例字符串:
$String = '[{test:["0","xx"],test2:["11","23"]}]'
而我想做的是编写函数,它将给我括号中的文本。它应该将其写入数组。
我要写的函数是这样的:
$avArray = getStringInsideBracketsKW($String,'[',']')
func getStringInsideBracketsKW($string, $openBracket, $closeBracket)
$NewAvArray = StringRegExp($string,'/\'&$openBracket&'.*?\'&$closeBracket&'/g')
Return $NewAvArray
EndFunc
那么现在 - 这个函数有什么问题? 我不擅长 RegExp 模式,但我确信这是做我想做的最好的方法。
@EDIT
因为它在 AutoIt 中,所以它必须是这样的:
$NewAvArray = StringRegExp($string,'[.*?]',3)
这会导致我:
$NewAvArray[0] = '[{test:["0","xx"]' ;
$NewAvArray[1] = '["11,"23"]';
但我想要这样的结果:
$NewAvArray[0] = '{test:["0","xx"],test2:["11","23"]}'
因为我想要一个数组,它显示这两个括号中的内容。
【问题讨论】:
-
为什么不直接使用 _StringBetween ?
-
因为它会找到第一个 '[' 和最近的 ']' 之间的字符串。我想找到该列表的容器。所以当它像 [x[aa]t] 时,我想要一个结果 x[aa]t。当字符串像 '[x[aa]][a[]]' 我想要一个具有 $avArray[0] = x[aa] 和 $avArray[1] = a[]的数组>
-
你为什么不从头开始写呢?为所有 $a 查找所有 $b 并提取外部的。
-
我的 StringRegExp 示例运行正常。