我在RegEx匹配中遇到问题。perl正则表达式匹配问题
my $line = 'Line no. : 8 : 8 : <ENAMEX TYPE="GENE">'
. 'CRP</ENAMEX> : directly inhibits : endothelial cell nitric'
. 'oxide <ENAMEX TYPE="GENE">facs</ENAMEX>'
. '<ENAMEX TYPE="GENE">crp</ENAMEX>:inhibit:endothelial'
. 'cell nitric oxide :Confidence Score 0.9017396427774064';
$line =~ /(.+)(\<ENAMEX TYPE\=\"GENE\"\>)(.+)(\<\/ENAMEX\>) (.+)(\<ENAMEX TYPE\=\"GENE\"\>)(.+)(\<\/ENAMEX\>)(.+)/;
print "$3 ---$5 ---$7\n";
,输出是:
CRP ---: directly inhibits : endothelial cell nitric oxide <ENAMEX TYPE="GENE">facs</ENAMEX> ---
问题:
我想是提取使用正则表达式的三两件事。输出应该是类似于 CRP ---:直接抑制:内皮细胞一氧化氮--- facs;
请告诉我什么是问题,因为$ 2在第一个块之后打印任何东西,并且正则表达式与第二个部分不匹配。 感谢
尝试使用nongreedy量词,即更换'+'与'+'。?。请参阅['perlretut'](http://perldoc.perl.org/perlretut.html)以获取更多信息 –
YUp这是有效的。谢谢百万 – ary