Perl将正则表达式匹配组分配给变量

kul*_*lan 4 regex perl grouping

我有一个以下格式的字符串:_num1_num2.我需要为某些变量赋值num1num2赋值.我的正则表达式是(\d+),它在Rubular.com上显示了正确的匹配组,但我不知道如何将这些匹配组分配给某些变量.有谁能够帮我?谢谢你.

Von*_*onC 8

那应该是(假设你的字符串存储在' $string'):

my ($var1, $var2) = $string =~ /_(\d+)_(\d+)/s; 
Run Code Online (Sandbox Code Playgroud)

我的想法是获取数字直到你得到一个非数字字符:这里' _'.

然后将每个捕获组分配给它们各自的变量.


本问题所述(以及Kaoru 下面的评论中):

\d 如果应用于Unicode字符串,则确实可以匹配10个以上的不同字符.

所以你可以改用:

my ($var1, $var2) = $string =~ /_([0-9]+)_([0-9]+)/s; 
Run Code Online (Sandbox Code Playgroud)