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";