Regex 如何在perl中打印mached正则表达式

Regex 如何在perl中打印mached正则表达式,regex,perl,Regex,Perl,我有这样一句话: Activity:B2012-0002 Type:BLDG Sub Type:SFD_OTHE Status:ISSUED 我只想打印: Activity:B2012-0002 为此,我使用下一个代码: my $text_file = "homework.txt"; open(INPUT, '<',$text_file) or die $!; while(my $row = <IN

我有这样一句话:

Activity:B2012-0002            Type:BLDG            Sub Type:SFD_OTHE           Status:ISSUED
我只想打印:

Activity:B2012-0002
为此,我使用下一个代码:

my $text_file = "homework.txt";

open(INPUT, '<',$text_file) or die $!;
        while(my $row = <INPUT>){
            chomp($row);
            if($row =~ /Activity:[\w-]+/){
               print "$1\n";
            }
        }
my$text\u file=“combiness.txt”;

打开(输入,您需要将捕获组添加到您的正则表达式中。例如,要捕获的内容周围的括号

        if($row =~ /Activity:([\w-]+)/){
           print "$1\n";
        }
将打印:

B2012-0002 
顺便说一句-如果您所做的一切都是捕获,您可能不想麻烦分配
$row
。请确定这是否会使您的代码更清晰:

while ( <INPUT> ) {
  if ( m/Activity:([\w-]+)/){
    print "$1\n";
  }
}

$1
指的是组1,但您的正则表达式没有捕获组,请使用
/(活动:[\w-]+)/
。如果您不想使用捕获组,还可以使用
$&
占位符(使用
打印“$&\n”
)。使用此选项希望它会有所帮助:
(活动:[\w-]+)
您的代码中没有此类变量
$var
。因此错误消息不能来自您发布的代码。请发布并发布真实代码和真实错误消息。
while ( <INPUT> ) {
  if ( m/Activity:([\w-]+)/){
    print "$1\n";
  }
}
m/Activity:([\w-]+)/ && print $1,"\n";