Perl之正則表達式--模式匹配


      大家用過unix或者linux系統,對vi,sed,grep,awk等使用工具不會陌生,應該了解用於定界符搜索模式的正則表達式和元字符。那么什么是正則表達式呢?正則表達式是一種序列或者字符模式,負責在搜索或者替換文本時對文本內容進行字符串匹配。簡單的正則表達式直接由待匹配字符串或字符集構成。

     正則表達式一般以斜杠(/)做界定符。實際上任何字符串都可以成為界定符。例如:/abc/, ?abc?

     表達式修飾符與簡單語句

     常見修飾符:if  unless while  until foreach

     if條件修飾符 

          格式     Expression2 if Expression1   如果Expression1表達式為真,則執行Expression2表達式內容。

          demo  

              (1)  $x=5;

                    print $x if x==5;      ====>輸出5

              (2)  $_="xabcy\n";

                    print if /abc/;           ====>輸出xabcy

             (3) $_="I lost my gloves in the clover.";

                   print "Found love in gloves!\n" if /love/;        ====>輸出Found love in gloves!

     unless修飾符 

            格式  Expression2 unless Expression1   如果Expression1為假,則執行Expression2表達式內容。

          demo

            (1) $x=5;

                 print $x unless $x==6; ====>輸出5

     while循環修飾符

            格式 Expression2 while Expression1   只要第一個表達式為真,while循環修飾符便會重復執行第二個表達式。

          demo

           (1) $x=1;

                 print $x++,"\n" while $x!=5;   ====>輸出1,2,3,4

     until修飾符 

           格式 Expression2 until Expression1  只要第一個表達式為假, while循環修飾符便會重復執行第二個表達式

         demo

          (1) $x=1;

               print $x++,"/n" until $x==5;  ====>輸出1,2,3,4

    foreach修飾符

         會逐個判斷列表中每個元素的值,並通過標量$_以此引用各個列表元素。

        demo

         (1) @alpha=(a .. z,"\n");

              print foreach @alpha; ====>abcdefghijkmnopqrstuvwxyz

 

  正則表達式運算符

        m運算符與匹配

       demo

       (1) while (<DATA>){

            print if /Betty/      ====>輸出 Betty Boop

       }

       __DATA__

      Steve Blenheim

      Betty Boop

      Igor Chevsky   

      Norma Cord

      (2)while (<DATA>){

        print if m#Jon#;     ====>輸出Jon DeLoach

      }

     __DATA__

     Steve Blenheim

     Betty Boop

     Igor Chevsky

     Norma Cord

     Jon DeLoach

    

     g全局修飾符

     i修飾符:大小寫不敏感

    demo

    (1)$_="I lost my gloves in the clover,Love.";

        @list=/love/gi;

        print "@list . \n";    ====>love love Love

     x表達修飾符用於在正則表達式中放入注釋或者空白字符,以便讓正則表達式含義更明確。

     demo

     (1) $_="San Francisco to Hong Kong \n";

          /Francisco

         /x;

        print "Comments and spaces were removed and \$& is $&\n";     ====>輸出Comments and spaces were removed and $& is Francisco

    S運算符與替換

     demo

    (1)$_="knock at heaven's door. \n";

        s/knock/"knock," *2."knocking"/ei;

        print "He's $_";  ====>He's knock,knock,knocking at heaven's door.

 

   模式綁定運算符

    =~  !~

   demo

   (1) while($_=<DATA>){

       print $_if $_=~/Igor/;   ====>輸出Igor Chevsky

  }

   __DATA__

   Steve  Blenheim

   Betty Boop

   Igor Chevsky

   Norma Cord

   (2) while ($_=<DATA>){

      print $_ if $_!~/Igor/;    ====>輸入除Igor Chevsky以外的名稱

   }

   __DATA__

   Steve Blenheim

   Betty Boop

   Igor Chevsky

   Norma Cord


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM