删除第二次和最后一次匹配之间的所有内容

2024-10-02 16:24:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个字符串,我想格式化。我想删除第二个;和最后第二个;之间的所有内容;。你知道吗

输入

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;    

非常感谢。你知道吗


Tags: cellularorganismseukaryotaarthropodaeumetazoaopisthokontametazoabilateria
2条回答

通过这样一个简单的字段选择,您可以使用^{}将字符串分隔为字段,选择所需的字段,然后将它们与^{}放回一起。你知道吗

注意,必须为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;

您可以在Perl中使用这个regexp

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

相关问题 更多 >