新聞中心
本文和大家重點(diǎn)討論一下Perl文本處理模塊的用法,Perl是用于文本分析的一種出色語言。內(nèi)置的操作符使得文本搜索、替換和模式匹配輕而易舉。

創(chuàng)新互聯(lián)公司從2013年創(chuàng)立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目做網(wǎng)站、網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元會(huì)同做網(wǎng)站,已為上家服務(wù),為會(huì)同各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220
Perl文本處理模塊
Perl的主要目標(biāo)之一是解析文本。這里主要討論用于文本解析的CPAN模塊,并展示了如何在程序中方便地使用它們。通過使用一些正確的工具,可以使分析代碼注釋、改編現(xiàn)有記載文法和許多其它任務(wù)變得容易??紤]到實(shí)際編程,給出了每個(gè)任務(wù)的示例。
Perl是用于文本分析的一種出色語言。內(nèi)置的操作符使得文本搜索、替換和模式匹配輕而易舉。
CPAN(綜合Perl檔案網(wǎng)絡(luò)(ComprehensivePerlArchiveNetwork))匯集了大量模塊,有些模塊把編程從文本和數(shù)據(jù)分析的困境中解救出來。
◆Perl文本處理模塊-將Perl模塊用于解析、記載和分析
DamianConway開發(fā)的Parse::RecDescent是一個(gè)對(duì)文本進(jìn)行記載和解析的功能強(qiáng)大的工具。KimRyan開發(fā)的Lingua::EN::Fathom可以分析一個(gè)文件或一個(gè)文本塊,并產(chǎn)生有關(guān)其輸入的各種統(tǒng)計(jì)信息。
Parse::RecDescent
缺點(diǎn):
由于它使用可擴(kuò)展文法規(guī)則并且實(shí)時(shí)地進(jìn)行記載和解析,所以比較慢。如果沒有正確使用該模塊,性能就會(huì)降低。
優(yōu)點(diǎn):
擅長(zhǎng)記載和解析。記載總是比任何其它工具更好地執(zhí)行任務(wù)。
◆Perl文本處理模塊-改編現(xiàn)有的記載文法
JohnHagerman的SwedishChef記載文法是出色的簡(jiǎn)單文本過濾器示例。它還非常有趣,會(huì)給許多計(jì)算機(jī)科學(xué)與工程專業(yè)的學(xué)生在畢業(yè)前夕帶來歡樂。我將展示一個(gè)使用Parse::RecDescent模塊將chef.l文法移植到Perl中的示例(Parse::RecDescent模塊并不是實(shí)現(xiàn)這一任務(wù)的理想選擇―Parse::Lex模塊會(huì)更好些)。這一節(jié)只準(zhǔn)備介紹構(gòu)建Parse::RecDescent語法的規(guī)則,將包括操作、記憶狀態(tài)、拒絕產(chǎn)品和對(duì)文本進(jìn)行記載。請(qǐng)記住,自己試一試chef.pl腳本―您很可能會(huì)對(duì)此著迷。
chef.pl腳本幾乎是chef.l記載文法完全一樣的副本。$niw變量在啟動(dòng)時(shí)設(shè)置為0,因?yàn)樵S多規(guī)則測(cè)試它來判斷它們應(yīng)該被接受還是被拒絕。$niw表示“不在文字中(notinword)”,而當(dāng)解析器在文字內(nèi)時(shí),它設(shè)置為1。如果Parse::RecDescent的偽指令中指定的變量非零,則該偽指令會(huì)拒絕該規(guī)則。因此,請(qǐng)牢記$niw=0意味著解析器不在文字內(nèi)。
skip變量設(shè)置為''(空字符串),所以所有輸入(包括空格)都轉(zhuǎn)至標(biāo)志偽指令。此外,chef規(guī)則以\z結(jié)束,\z表示字符串的結(jié)束。通常使用\Z,但那還可以匹配Perl中的換行,它們也都可以在輸入中。
◆chef規(guī)則:文法以chef規(guī)則開始。chef規(guī)則匹配許多標(biāo)志,直至表示字符串結(jié)束的\z。chef規(guī)則的那兩個(gè)元素稱為“產(chǎn)品”。任何規(guī)則都必須由產(chǎn)品組成。操作可以是產(chǎn)品的一部分;它由花括號(hào){}標(biāo)出,并包含Perl代碼。它不匹配任何事物―操作僅用于執(zhí)行。
◆token規(guī)則:token規(guī)則可以匹配任何數(shù)或序列,這些數(shù)和序列是我為匹配chef.1文法而指定的(有些隨意)。我將說明一些示例,以便使文法對(duì)應(yīng)清晰。
網(wǎng)站欄目:Perl文本處理模塊用法指導(dǎo)
分享鏈接:http://m.5511xx.com/article/dhejdoc.html


咨詢
建站咨詢
