Perl中的正則表達

來源:互聯網
上載者:User

標籤:style   blog   color   ar   使用   for   sp   檔案   div   

  前幾天用到了Perl語言,主要看了一下Perl中的Regex,在各種網頁語言中,Regex在處理字串的時候十分有用,所以這裡就簡單說一下在Perl中Regex的應用。

  先上代碼

 1 #!/usr/bin/perl -w 2 #use utf8; 3 #use encoding "gb2312"; 4  5 open(DATA,"<test2.txt") or die "read error"; 6  7 open(OUT,">outfile.txt") or die "write error"; 8 %array=();  9 while ($string =<DATA>){10   11   if ($string =~ /s.*.m/) {12     $string =~ s/s.*.m//g;13     14   }15   chomp($string);     #去掉分行符號16     foreach $character(split / /,$string){17     if ($character =~ /\/d$/)18     {19         $array{$character}++;20     }#code21   }22 }23 print OUT "result:\n";24 @character = sort {$array{$b} <=> $array{$a} }( keys %array);25 foreach $character (@character){26     print   OUT "$character => $array{$character}\n";27 }

  簡單說一下就是,讀取檔案內容到字串,去掉分行符號,按空格分割(spilt),匹配到以s開頭,以m結束的字串,然後以空串替換之(刪除),匹配到以d結束的字串,存到數組中,最後按降序輸出到檔案。實際就是刪除s開頭,m結尾的單詞,找到所有以d結束的單詞,並統計。

  Regex

  (1)三種形式

   匹配:m/<regexp>;/ (還可以簡寫為 /<regexp>;/ ,略去 m)

  替換:s/<pattern>;/<replacement>;/

  轉化:tr/<pattern>;/<replacemnt>;/

  這三種形式和“=~”或“!~”搭配使用,分別表示匹配和不匹配,在上述代碼中用到了匹配符號。

     (2)常用模式(pattern)  

. 匹配除分行符號以外的所有字元

 

x? 匹配 0 次或一次 x 字串

 

x* 匹配 0 次或多次 x 字串,但匹配可能的最少次數

 

x+ 匹配 1 次或多次 x 字串,但匹配可能的最少次數

 

.* 匹配 0 次或一次的任何字元

 

.+ 匹配 1 次或多次的任何字元

 

{m} 匹配剛好是 m 個 的指定字串

 

{m,n} 匹配在 m個 以上 n個 以下 的指定字串

 

{m,} 匹配 m個 以上 的指定字串

 

[] 匹配符合 [] 內的字元

 

[^] 匹配不符合 [] 內的字元

 

[0-9] 匹配所有數字字元

 

[a-z] 匹配所有小寫字母字元

 

[^0-9] 匹配所有非數字字元

 

[^a-z] 匹配所有非小寫字母字元

 

^ 匹配字元開頭的字元

 

$ 匹配字元結尾的字元

 

\d 匹配一個數位字元,和 [0-9] 文法一樣

 

\d+ 匹配多個數字字串,和 [0-9]+ 文法一樣

 

\D 非數字,其他同 \d

 

\D+ 非數字,其他同 \d+

 

\w 英文字母或數位字串,和 [a-zA-Z0-9] 文法一樣

 

\w+ 和 [a-zA-Z0-9]+ 文法一樣

 

\W 非英文字母或數位字串,和 [^a-zA-Z0-9] 文法一樣

 

\W+ 和 [^a-zA-Z0-9]+ 文法一樣

 

\s 空格,和 [\n\t\r\f] 文法一樣

 

\s+ 和 [\n\t\r\f]+ 一樣

 

\S 非空格,和 [^\n\t\r\f] 文法一樣

 

\S+ 和 [^\n\t\r\f]+ 文法一樣

 

\b 匹配以英文字母,數字為邊界的字串

 

\B 匹配不以英文字母,數值為邊界的字串

 

a|b|c 匹配符合a字元 或是b字元 或是c字元 的字串

 

abc 匹配含有 abc 的字串

 

  在匹配中要注意逸出字元的使用。Regex在處理字元時給我們提供很多便利,這裡只是介紹了最簡單的使用,並且發現字串中隱含的模式進行匹配也是需要我們注意的,以後還要在使用中多多地學習。

 

Perl中的正則表達

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.