gpt4 book ai didi

arrays - 使用 Perl 使用 RegEx 或符号后面出现的值对数组进行排序

转载 作者:行者123 更新时间:2023-12-03 07:53:10 26 4
gpt4 key购买 nike

我有一个数组:

@all (
<side.effect signif="life.threat">myocardial infarction</side.effect>
<side.effect signif="life.threat">hypersensitivity reactions</side.effect>
<side.effect signif="life.threat">lactic acidosis</side.effect>
<side.effect signif="most.freq">vomiting</side.effect>
<side.effect signif="most.freq">diarrhea</side.effect>
);

我想根据开始 XML 标记/属性 (">) 之后的值对数组进行排序以生成以下输出:

<side.effect signif="most.freq">diarrhea</side.effect>
<side.effect signif="life.threat">hypersensitivity reactions</side.effect>
<side.effect signif="life.threat">lactic acidosis</side.effect>
<side.effect signif="life.threat">myocardial infarction</side.effect>
<side.effect signif="most.freq">vomiting</side.effect>

我无法将其转换为散列,因为这会因复制而消除标签。我尝试了这个,但它没有对它们进行排序:

    my @sorted_all = sort {
my ($aa, $bb) = map { (split)[1] } $a, $b;
$bb <=> $aa;
} @all;

最佳答案

使用Sort::Key

use strict;
use warnings;
use feature qw(say);

use Sort::Key qw(keysort);

my @all = (
q{<side.effect signif="life.threat">myocardial infarctio</side.effect>},
q{<side.effect signif="life.threat">hypersensitivity reations</side.effect>},
q{<side.effect signif="life.threat">lactic acidosis</sid.effect>},
q{<side.effect signif="most.freq">vomiting</side.effect>},
q{<side.effect signif="most.freq">diarrhea</side.effect>},
);


my @sorted = keysort { ( /">(.+?)<\// )[0] } @all;

say for @sorted;

图书馆使用Schwartzian Transform需要时,首先为所有项目构建比较模式(而不是在每对比较时重新进行比较)。我复制了给定的输入,包括错别字等等。

使用正则表达式解析 XML 标记依赖于这种非常特定的输入格式。如果格式会有变化,请使用适当的 XML 解析器,例如 XML::LibXML 。例如

use XML::LibXML;

my $parser = XML::LibXML->new;

my @sorted = keysort {
$parser -> parse_string($_)
-> findnodes('side.effect') -> [0]
-> textContent
} @all;

有关此代码,请参阅 XML::LibXML::ParserXML::LibXML::Node 。该库附带了更多文档,请参阅第一次提到时链接的顶部文档。

为此,我必须更正一个节点中的 sid.effect 拼写错误,以获得有效的 XML。

关于arrays - 使用 Perl 使用 RegEx 或符号后面出现的值对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76656588/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com