我在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