簡體   English   中英

Perl正則表達式不匹配

[英]Perl regular expression not matching

我在Perl中具有以下正則表達式。

if ($line =~ m/DX/o) {
  printf("%s.\n", $line);
}

if ($line =~ m/.*DX\s+.*\s+.*\s+(.*)\sGB/oi) {
                printf("TRUE: %s\n", $1);
                ($dx = $1) =~s/,//g;
}

正在打印

DX 93,132 GB -- 2,145 GB 16840176 16835553.

但是沒有輸入第二個正則表達式。 我已經檢查了正則表達式,看不到任何錯誤。 有人可以建議嗎?

謝謝。

如果您所有的字段都由多個空格分隔(即,沒有一個字段可以連續包含兩個或多個空格),我建議您使用split而不是正則表達式:

if ($line =~ /^DX/) {
    my @fields = split /\s{2,}/, $line;
    $fields[3] =~ s/,//g; # Strip commas from 4th field
    print $fields[3];
}

__END__
2145 GB

如果您的數據實際上是制表符分隔的,請將split更改為

my @fields = split /\t/, $line;

遵循應該工作: /--\\s+(\\S+)\\s/

試試這個:

^\s*DX.*?([\d,]+)\sGB(?!.*GB)/oi

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM