我有以下句子:
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.
我想做的是创建一个可以匹配上面两个句子的正则表达式(regex)。请注意,上述句子中唯一不同的模式是中间因素<EXP-V-3>
和<ASSC-PHRASE-1>
。
我坚持当前的尝试,它在两个冗余的正则表达式中匹配它们。正确的方法是什么?
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";
}
}