我有 2 个数组,其中一个数组由我认为是触发词的单词组成,而第二个数组是名称列表。我想在具有触发词的文件中查找句子,然后左右查找并使用数组名称查找匹配项。
我对如何解决这个问题有点困惑。
my @strings = (
'SPARC is an activator of SPARCL1.',
'SPARCL1 and SPARC regulate the expression of TGFB1.',
'SPARCL1 and SPARC are used in signal transduction.',
'SPARCL1 and ADAMTS4 have been found to upregulated by MMP3 and MMP3 are downregulated by SMAD3.',
);
my @trigs = ( "activator", "regulate", "upregulated" , "downregulated" );
my @genes = ( "SPARC", "SPARCL1", "ADAMTS4", "MMP3", "SMAD3", "TGFB1" );
期望的输出:
SPARC is an activator of SPARCL1
SPARC regulate the expression of TGFB1
ADAMTS4 have been found to upregulated by MMP3
MMP3 are downregulated by SMAD3
my $trig_re = join '|', map quotemeta, @trigs;
$trig_re = qr/\b(?:$trig_re)/;
my $gene_re = join '|', map quotemeta, @genes;
$gene_re = qr/\b(?:$gene_re)\b/;
my $re = qr/
(
$gene_re
(?:(?!$gene_re|$trig_re).)*
$trig_re
(?:(?!$gene_re|$trig_re).)*
$gene_re
)
/sx;
for my $string (@strings) {
say $1 while $string =~ /$re/g;
}
输出:
SPARC is an activator of SPARCL1
SPARC regulate the expression of TGFB1
ADAMTS4 have been found to upregulated by MMP3
MMP3 are downregulated by SMAD3
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句