3

私は次の文を持っています:

     text <MIR-1> GGG-33 <EXP-V-3> text text <VACCVIRUS-PROP-1> some other.
     text <MIR-1> text <ASSC-PHRASE-1> text <VACCVIRUS-PROP-1> some other <PATTERN-1> other.

私がやりたいことは、上記の 2 つの文に一致する単一の正規表現 (regex) を作成することです。上記の文の唯一の異なるパターンは、中間因子<EXP-V-3>とであることに注意してください<ASSC-PHRASE-1>

私は、2 つの冗長な正規表現でそれらを一致させた現在の試みに行き詰まっています。それを行う正しい方法は何ですか?

 use Data::Dumper;

    @sent = ("text <MIR-1> GGG-33 <EXP-V-3> text text <VACCVIRUS-PROP-1> some other.",
             " text <MIR-1> text <ASSC-PHRASE-1> text <VACCVIRUS-PROP-1> some other <PATTERN-1> other.");


    foreach $sent (@sent) {
       if ( $sent =~ /.*<MIR-\d+>.*<EXP-V-\d+>.*<VACCVIRUS-PROP-\d+>.*/gi ) {

          print "$sent\n";
        }
        elsif( $sent =~ /.*<MIR-\d+>.*<ASSC-PHRASE-\d+>.*<VACCVIRUS-PROP-\d+>/gi ) {
         print "$sent\n";
        }
    }

ライブデモ

4

2 に答える 2