[英]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.