Perl中的这一行是做什么的?($ rowcol = ~m /([AZ]?)([0-9] +)/);

Joh*_*n 1 regex perl

这条线在Perl中有什么作用?

my @parsedarray = ($rowcol =~ m/([A-Z]?)([0-9]+)/);
Run Code Online (Sandbox Code Playgroud)

$ rowcol类似于A1,D8等......我知道脚本会以某种方式拆分它们,因为接下来的两行是这些:

my $row = $parsedarray[0];
my $col = $parsedarray[1];
Run Code Online (Sandbox Code Playgroud)

我只是看不出这行是什么($ rowcol = ~m /([AZ]?)([0-9] +)/); 以及它是如何工作的.

gho*_*g74 7

([A-Z]?)意味着最多捕获一个大写字母.([0-9]+)表示匹配并捕获至少一个数字.

下次,您可以安装YAPE :: Regex :: Explain来告诉您发生了什么.例如

 use YAPE::Regex::Explain;
 my $regex = "([A-Z]?)([0-9]+)";
 my $exp = YAPE::Regex::Explain->new($regex)->explain;
 print $exp."\n";
Run Code Online (Sandbox Code Playgroud)

请注意,m//在列表上下文中返回所有捕获的子字符串.