模式匹配修飾符

用/i進行大小寫無關的匹配

use 5.010;
print "Would you like to play a game?";
chomp($_=<STDIN>);
if (/yes/i) {
    say "In that case,I recommend that you to bowling.";
}

用/s匹配任意字符

默認狀況下,點號(.)沒法匹配換行符,若是但願點號能匹配這些換行符,那麼/s修飾符能夠完成這個任務。spa

use 5.010;

$_="I saw Barney\ndown at the bowling alley\nwith Fred\nlast night.";
if (/Barney.*Fred/s) {
    say "That string mentions Fred after Barney!";
}

用/x加入空白符

容許咱們在模式裏隨意加上空白符,從而使它更易閱讀,理解。
因爲加上/x後模式裏能夠隨意插入空白,因此原來表示空白和製表符自己的空白符就失去了意義,perl會直接忽略。
但咱們總能夠經過轉義方式變通實現,\s(或者\s*,或是\s++),表示匹配空白符。
Perl 還會把模式中出現的註釋看成空白符直接忽。code

/
    -?          #一個無關緊要的減號
    [0-9]+      #小數點前必須出現一個或多個數字
    \.?         #一個無關緊要的小數點
    [0-9]*      #小數點後面的數字,有沒有都不要緊
/x              #字符串末尾

組合選項修飾符

若是須要對單次匹配使用多項修飾符,只須要把它們接在一塊兒寫在模式末尾(不用在乎前後順序): blog

if (m{
      barney  # 小夥子barney
      .*      # 夾在中間無論什麼字符
      fred    # 大嗓門的fred
   }six) {    # 同時使用 /s /i /x
      print "That string menthions Fred after Barney!\n";

 }

選擇一種字符解釋方式

Perl 5.14開始增長一些用於通知perl如何解釋字符意義的修飾符。
總共有三種字符解釋方式:ASCII Unicode locale 修飾符/a告訴Perl採起ASCII模式,而/u則表示採起Unicode方式,
最後/l表示聽從本地化語言的設定。 若是不提供這類修飾符,Perl會根據perlre文檔描述的方式採起最爲妥帖的行爲。而經過使用
修飾符,你能夠顯示制定程序確切的行爲。文檔

use 5.014;

 /\w+/a    #僅僅是 A-Z a-z 0-9 _ 這些字符
 /\w+/u    #任何Unicode當中定義爲單詞的字符
 /\w+/l    #類同於ASCII的版本,但單詞字符的定義取決於本地化設定
相關文章
相關標籤/搜索