gpt4 book ai didi

Perl 正则表达式摘录

转载 作者:行者123 更新时间:2023-12-01 06:21:13 24 4
gpt4 key购买 nike

我正在尝试使用正则表达式从文本文件中提取特定的数字字符串,但是当我的代码运行时,它会抓取日期和时间之间的斜杠后面的数字。这是我到目前为止所拥有的。

while ( <INFILE> ) {

my @fields = split( /\ /, $_ );
my @output;

foreach my $field ( @fields ) {
if ( $field =~ /[0-9]{5}\// ) {
push @output, $field;
}
}

if ( @output ) {
my $line = join( ' ', @output );
print "$line\n";
print OUTFILE "$line\n";
}
}

我试图从中提取数据的行是

D2001235 9204 254/2004 254/1944 254/2041 15254/2011 ALL-V4YM 001 AUTO C-C0000

我需要的数据是15254,但当我运行代码时,它返回15254/2011,并且我的程序出错。

最佳答案

问题是您将整个 $field 存储在输出数组中,但您只想存储斜杠左侧的数字。您可以在正则表达式和 $1 特殊变量中使用捕获括号。输出15254:

use warnings;
use strict;

while (<DATA>) {
my @fields = split( /\ /, $_ );
my @output;
foreach my $field (@fields) {
if ( $field =~ /^([0-9]{5})\// ) {
push @output, $1;
}
}
if (@output) {
my $line = join( ' ', @output );
print "$line\n";
}
}

__DATA__
D2001235 9204 254/2004 254/1944 254/2041 15254/2011 ALL-V4YM 001 AUTO C-C0000

关于Perl 正则表达式摘录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32745756/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com