请教一下大家,看看我对下面这句话的理解对吗?

请教一下大家,看看我对下面这句话的理解对吗?

请教一下大家,看看我对下面这句话的理解对吗?
请教一下大家,看看我对下面这句话的理解对吗?

/^(\d+)(?: -(\d+))?$/ and push @range, $1, (length($2) ? $2 : $1);

这个的意思是:

首先找数字,(^(\d+))

然后匹配-,用?:表示无限多个-,(?: -)

然后匹配数字,((\d+))

然后后面的 ?$ 不知道什么意思。

and不知道什么意思
$是匹配到结束符.
and意思是只有前面一个正则满足的条件下才执行后面这个命令.
?:的意思是不捕捉这个()内的结果,一个好处是可以加快程序的速度,不浪费资源.
-(\d+))?这个是联合起来看的,最小匹配这个数字.
非贪婪匹配 --- “?:”.