例如,对于一个字符串:
var1=100 var2=90 var5=hello var3="a, b, c" var7=test var3=hello
使用代码处理此内容:
$string = "var1=100 var2=90 var5=hello var3=\"a, b, c\" var7=test var3=hello";
my @array = $string =~ <regular expression here>
for ( my $i = 0; $i < scalar( @array ); $i++ )
{
print $i.": ".$array[$i]."\n";
}
我希望看到的输出结果是:
0: var1=100
1: var2=90
2: var5=hello
3: var3="a, b, c"
4: var7=test
5: var3=hello
我需要使用正则表达式匹配内容,这些内容都是赋值语句模式,例如:
my @array = $string =~ m/(\w+=[\w\"\,\s]+)*/;
在上述正则表达式中,“*”表示匹配该组的一个或多个出现。
(我不使用split(),因为某些匹配项本身包含空格(即var3...),因此无法得到所需的结果。)
使用上述正则表达式,我只得到:
0: var1=100 var2
我需要在正则表达式中实现这个功能吗?还是需要添加代码?
已经查看了现有的答案,搜索"perl regex multiple group",但线索不够: