[英]Perl and Regular expression; $1 is empty
脚本:
$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"
}
输出:
^^^^^^^^^
这只是一个临时字符串,只是为了好玩-> true <-
^^^^^^^^^
问题:
aString
有多少子表达式匹配? 请澄清。
为什么$ 1是空的?
您的表达式中没有捕获组( ()
)。 也许你的意思是:
$aString =~ /^This\sis(.*)just/
如何知道aString中有多少子表达式匹配?
一旦捕获了一些数据,就可以根据需要对其进行测试。
如果您确实不想使用捕获组(如至少一个其他答案所述),则还可以在正则表达式上使用/ p选项,并使用${^MATCH}
代替$1
:
if( $aString =~ /^This\sis.*just/p )
{
print $aString . " ->true<-\n" . "^^^^^^^^" ."${^MATCH}";
}
这等效于将整个正则表达式包装在捕获组中:
if( $aString =~ /(^This\sis.*just)/ )
{
print $aString . " ->true<-\n" . "^^^^^^^^" ."$1";
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.