首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从行中提取特定列,并根据给定范围进行匹配

从行中提取特定列,并根据给定范围进行匹配
EN

Stack Overflow用户
提问于 2016-12-29 14:43:06
回答 1查看 286关注 0票数 1

我尝试使用正则表达式从文本中识别特定范围内的数字(浮点数),文本格式为: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

EN

回答 1

Stack Overflow用户

发布于 2016-12-29 17:07:16

我建议您拆分这一行,这样就可以获得确切的列,然后对这些列进行所需的处理。请参阅以下方法:

代码语言:javascript
运行
复制
#!/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
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41374455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档