Perl中的匹配(六)


在Perl中,匹配的定界符如果是雙斜線//,可以直接使用雙斜線完成匹配操作。

              如果特定條件下需要改變定界符,如改為{},[]等。需要加入m,m{},m[]等。

                           m%^http://%

              默認的模式匹配對象是自動化變量$_,如果要指定匹配對象,可以使用綁定操作符=~。

                           my $some_other = "I have a Dream";

                           if($some_other =~ /\brub/);    ##用右側的模式對左側的對象進行匹配。

 

模式匹配修飾符:

             /i表示大小寫無關的匹配。

             /s表示元字符"."可以匹配到換行符。

             /x表示原匹配對象中的空白符無效,我們可以隨意增加分割用的空白符,

                                                     對之前的空格可以使用\s字符集來表示。

             修飾符/a表示用ASCII碼的方式解釋對象中的字符,/u表示用unicode的方式來解釋對象中的字符。

 

錨位修飾符:

            \A表示字符串的絕對起始位置--行首。

                  m{\Ahttps:?://}i; 

           \z表示字符串的絕對結束位置--行尾(\n之后)。

           脫字符(^)表示行首的首錨位,行尾的尾錨位($),/m主要針對這兩個錨位修飾符,

                     使得他們既可以得到行首行尾錨位。又可以錨位字符串首位

           \Z表示行尾錨位,不同的是允許之后可以有換行符。

           \b表示單詞錨位。

                    /\bfreb\b/;

 

捕獲變量與捕獲組中的反向引用相對用:

           默認使用$1,$2這樣的變量來表示,變量內部存儲最近一次成功匹配到的值。

                   $_ = "Hello there, neighbor";

                   if(/(\S+) (\S+) (\S+)/) {

                               print "words were $1,$2,$3 \n"; }

          自定義命名捕獲變量和關閉捕獲。

                   if(/(?:bronto)?saurus (steak|burger)/)     ##?:表示關閉捕獲功能,不會產生$1;

                          print "I saw $1";                             ##輸出steak和burger的捕獲值。 

                   if($names =~m/((?<name1>\w+) (and|or) (?<name2>\w+) \g{name1})/) 

                                            ##在該條語句中直接應用反向引用,在下一條語句中使用引用變量。

                          print "I saw $+<name1>";

 

自動捕獲變量的存儲,經過匹配后的數據,可以分為三部分:

匹配區段之前的字符:可以用$`或${^PREMATCH}

匹配的字符:可以用$&或者$(^MATCH)

匹配之后的字符:可以用$'或者$(^POSTMATCH)


免責聲明!

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



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