1

我有一个字符串:

"2012-szept-17 02:55 - someproblem: 192.167.1.1 since - $somevariables[0] $morevariables[-1]"

我想把这些放到一个数组中

$somevariables[0]
$morevariables[-1]

问题是这些变量可以命名为其他任何名称,并且它们可以位于字符串中的任何位置。我对它们的唯一了解是它们从开始$[sg]结束。

这是我用正则表达式得到的最远距离

my @fuu = $notimsg =~ m/(\$.+\[.+\])/g;

问题是表达式正在使它变成"$somevariables[0] $morevariables[-1]"

4

1 回答 1

1

如果它们必须是有效的变量名(标识符),请尝试

m/(\$\w+\[[^]]+\])/g

正如@Borodin 指出的那样,如果您真的想确保只匹配标识符(而不是奇怪的东西$3abc[12]),您可以使用

m/(\$[a-z_]\w*\[[^]]+\])/gi
于 2012-09-17T01:25:41.183 回答