相关疑难解决方法(0)

Perl中的Regex Group:如何从正则表达式组中将元素捕获到数组中,以匹配字符串中未知数量的/多个/变量出现?

在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 …

regex perl grouping match

47
推荐指数
4
解决办法
7万
查看次数

Python正则表达式 - 如何从通配符表达式中捕获多个组?

我有一个Python正则表达式,其中包含一个可以出现零次或多次的组 - 但是当我之后检索组列表时,只有最后一个存在.例:

re.search("(\w)*", "abcdefg").groups()

这将返回列表('g',)

我需要它返回('a','b','c','d','e','f','g',)

那可能吗?我该怎么做?

python regex lexical-analysis

32
推荐指数
2
解决办法
2万
查看次数

标签 统计

regex ×2

grouping ×1

lexical-analysis ×1

match ×1

perl ×1

python ×1