亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

perl 數組匹配

perl 數組匹配

墨色風雨 2019-04-12 07:06:07
代碼如下open(LINE,"d:/top.txt");while (<LINE>){if(m/(Total copper :)(.*)(sq\/mm)/){$top = $2};}close LINE;$T = sprintf("%.2f",$top / 10000)top.txt內容如下Total copper : 25053.227 sq/mm為什么最后輸出的是00.0while (<LINE>){if(m/(Total copper :)(.*)(sq\/mm)/){$top = $2};}這句不是已經捕獲了25053.227了嗎?
查看完整描述

2 回答

?
浮云間

TA貢獻1829條經驗 獲得超4個贊

(?<=<item>).*?(?=</item>)

這里使用寬度斷言和勉強模式重復。
(?<=<item>)表示匹配內容的左邊滿足表達式<item>,
(?=</item>)表示匹配內容的右邊滿足表達式<\item>,
.*? 表示是勉強模式匹配(即匹配最少的內容),之所以使用勉強模式匹配是因為,如果使用貪婪模式則會出現和您的表達式出現的同樣問題。但這個表達式也存在有bug,即如果出現如下的:
<?xml version="1.0" encoding="UTF-8"?>
<rss>
<channel>
<title>TITLE</title>
<link>LINK</link>
<item><title>T1</title><link>L1</item></link><description>D1</description></item>
<item><title>T2</title><link>L2</link><description>D2</description></item>
</channel>
</rss>
則匹配就不準確了,不過考慮到xml文檔格式的嚴謹,應不會有這種情況出現,故就不對表達式再進行優化了。

是可以將匹配的結果讀取到數組中去的,不知您使用的何種語言,故無法給出代碼。



查看完整回答
反對 回復 2019-04-13
  • 2 回答
  • 0 關注
  • 731 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號