【问题标题】:Remove everything between second and second last occurance of match删除第二次和倒数第二次匹配之间的所有内容
【发布时间】:2015-05-25 14:17:06
【问题描述】:

我有想要格式化的字符串。我想删除 second 之间的所有内容;倒数第二个;.

输入

cellular organisms;Eukaryota;Opisthokonta;Metazoa;Eumetazoa;Bilateria;Protostomia;Ecdysozoa;Panarthropoda;Arthropoda;Mandibulata;Pancrustacea;Hexapoda;Insecta;Dicondylia;Pterygota;Neoptera;Endopterygota;Coleoptera;Polyphaga;Cucujiformia;Tenebrionoidea;Tenebrionidae;Tenebrionidae incertae sedis;Tribolium;Tribolium castaneum;

输出

cellular organisms;Eukaryota;Tribolium castaneum;

我尝试过使用 sed。

$ sed 's/;[^;]*//' <<<"cellular organisms;Eukaryota;Opisthokonta;Metazoa;Eumetazoa;Bilateria;Protostomia;Ecdysozoa;Panarthropoda;Arthropoda;Mandibulata;Pancrustacea;Hexapoda;Insecta;Dicondylia;Pterygota;Neoptera;Endopterygota;Coleoptera;Polyphaga;Cucujiformia;Tenebrionoidea;Tenebrionidae;Tenebrionidae incertae sedis;Tribolium;Tribolium castaneum;"    

生产

cellular organisms;Opisthokonta;Metazoa;Eumetazoa;Bilateria;Protostomia;Ecdysozoa;Panarthropoda;Arthropoda;Mandibulata;Pancrustacea;Hexapoda;Insecta;Dicondylia;Pterygota;Neoptera;Endopterygota;Coleoptera;Polyphaga;Cucujiformia;Tenebrionoidea;Tenebrionidae;Tenebrionidae incertae sedis;Tribolium;Tribolium castaneum;    

非常感谢。

【问题讨论】:

    标签: python linux perl


    【解决方案1】:

    通过如此简单的字段选择,您可以使用split 将字符串分隔为字段,挑选出您想要的字段,然后将它们与join 重新组合在一起。

    请注意,您必须为 split 的第三个参数提供一个负数,以防止它丢弃尾随的空字段。

    看起来像这样

    use strict;
    use warnings;
    
    my $s = 'cellular organisms;Eukaryota;Opisthokonta;Metazoa;Eumetazoa;Bilateria;Protostomia;Ecdysozoa;Panarthropoda;Arthropoda;Mandibulata;Pancrustacea;Hexapoda;Insecta;Dicondylia;Pterygota;Neoptera;Endopterygota;Coleoptera;Polyphaga;Cucujiformia;Tenebrionoidea;Tenebrionidae;Tenebrionidae incertae sedis;Tribolium;Tribolium castaneum;';
    
    my $ss = join ';', (split /;/, $s, -1)[0,1,-2,-1];
    
    print $ss, "\n";
    

    输出

    cellular organisms;Eukaryota;Tribolium castaneum;
    

    【讨论】:

      【解决方案2】:

      你可以在 Perl 中使用这个正则表达式

      perl -pE's/;.*?\K;.*(?=;.*;)//' <<<'cellular organisms;Eukaryota;Opisthokonta;...;Tribolium;Tribolium castaneum;'
      

      【讨论】:

        猜你喜欢
        • 2021-01-06
        • 2021-12-27
        • 1970-01-01
        • 1970-01-01
        • 2011-05-19
        • 1970-01-01
        • 1970-01-01
        • 2013-09-02
        • 2014-10-19
        相关资源
        最近更新 更多