在Perl中,如何使用一个正则表达式分组来捕获多个匹配它的事件到多个数组元素?
例如,对于字符串:
var1=100 var2=90 var5=hello var3="a, b, c" var7=test var3=hello
Run Code Online (Sandbox Code Playgroud)
用代码处理这个:
$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";
}
Run Code Online (Sandbox Code Playgroud)
我想看看输出:
0: var1=100
1: var2=90
2: var5=hello
3: var3="a, b, c"
4: var7=test
5: var3=hello
Run Code Online (Sandbox Code Playgroud)
我会用什么作为正则表达式?
我想在这里匹配的东西之间的共性是一个赋值字符串模式,所以类似于:
my @array = $string =~ m/(\w+=[\w\"\,\s]+)*/;
Run Code Online (Sandbox Code Playgroud)
其中*表示与该组匹配的一个或多个事件.
(我使用split()打折,因为有些匹配本身包含空格(即var3 ...),因此不会产生预期的结果.)
有了上面的正则表达式,我只得到:
0: var1=100 var2
Run Code Online (Sandbox Code Playgroud)
正则表达式是否可能?还是需要添加代码?
在查找"perl regex …
我有一个Python正则表达式,其中包含一个可以出现零次或多次的组 - 但是当我之后检索组列表时,只有最后一个存在.例:
re.search("(\w)*", "abcdefg").groups()
这将返回列表('g',)
我需要它返回('a','b','c','d','e','f','g',)
那可能吗?我该怎么做?