Perl和正则表达式; 1美元是空的

Azo*_*ous 0 regex perl regex-greedy

脚本:

$aString = "This is Just a temp string just for fun";

print '^^^^^^^^' . "\n";

if( $aString =~ /^This\sis.*just/ )
{
    print $aString . " ->true<-\n" . "^^^^^^^^" ."$1";
}
else
{
    print $aString . " ->false<-\n" . "^^^^^^^^" ."$1"
}
Run Code Online (Sandbox Code Playgroud)

输出:

^^^^^^^^

这只是一个临时字符串只是为了好玩 - > true < -

^^^^^^^^

问题:

  1. 为什么1美元是空的?
  2. 如何知道aString匹配的子表达式有多少?

请澄清一下.

Que*_*tin 7

为什么1美元是空的?

您的表达式中没有捕获组(()).也许你的意思是:

$aString =~ /^This\sis(.*)just/
Run Code Online (Sandbox Code Playgroud)

如何知道aString中有多少子表达式匹配?

捕获一些数据后,您可以根据需要进行测试.