脚本:
$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"
}
输出:
^^^^^^^^
这只是一个只是为了好玩的临时字符串 - &gt; true&lt; -
^^^^^^^^
问题:
aString
中的子表达式匹配多少?请澄清。
答案 0 :(得分:7)
为什么1美元是空的?
您的表达式中没有捕获组(()
)。也许你的意思是:
$aString =~ /^This\sis(.*)just/
如何知道aString中的子表达式匹配多少?
一旦捕获了一些数据,您可以根据需要进行测试。
答案 1 :(得分:2)
如果你真的不想使用捕获组(至少在其他一个答案中提到),你也可以使用正则表达式上的/ p选项和${^MATCH}
而不是{{1} }:
$1
这相当于(?)将整个正则表达式包装在捕获组中:
if( $aString =~ /^This\sis.*just/p )
{
print $aString . " ->true<-\n" . "^^^^^^^^" ."${^MATCH}";
}