我尝试使用正则表达式从文本中识别特定范围内的数字(浮点数),文本格式为:3 1 EDR 918771665157 ^[[32m97.01424 ^[[0m918489349209 ^[[32m97.01408 ^[[0m 3 2 EDR 918493379596 ^[[32m87.01418 ^[[0m918775654999 ^[[32m87.01434 ^[[0m
^[[32m
和^[[0m
字符串是由颜色决定的。我正在尝试检查第5列和第7列是否在93.00000和99.99999之间,但是如果值是93.00000,它可能会显示为93。我尝试了以下方法:9[3-9](\.\d{1,5})?\s+\S+\s+.*9[3-9](\.\d{1,5})?
,但我遇到了一个问题,因为在第二行中,第5列和第7列不在范围内,但由于第4列和第6列,我得到了true
发布于 2016-12-29 17:07:16
我建议您拆分这一行,这样就可以获得确切的列,然后对这些列进行所需的处理。请参阅以下方法:
#!/usr/bin/env perl
use strict;
use warnings;
while(<DATA>){
chomp;
my @columns = split/\s+/, $_;
my $fifth_column = $columns[4];
my $seventh_column = $columns[6];
#Remove ^[[32m and ^[[0m
$fifth_column =~ s/\^\[\[32m|\^\[\[0m//g;
$seventh_column =~ s/\^\[\[32m|\^\[\[0m//g;
#Verify that above are between 93.00000 and 99.99999
}
__DATA__
3 1 EDR 918771665157 ^[[32m97.01424 ^[[0m918489349209 ^[[32m97.01408 ^[[0m
3 2 EDR 918493379596 ^[[32m87.01418 ^[[0m918775654999 ^[[32m87.01434 ^[[0m
https://stackoverflow.com/questions/41374455
复制相似问题