我试图使用正则表达式识别文本中某个范围内的数字(浮点数),文本格式为:
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列我得到了真实
答案 0 :(得分:3)
我建议您拆分该行,以便您可以获得确切的列,然后对这些列进行所需的处理。请参阅以下方法:
#!/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