Perl 代码,用于在句子中查找数组元素,然后在匹配的任一侧查找要从不同数组匹配的另一个字符串

阿里

我有 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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档