模式匹配修饰符

用/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修饰符可以完成这个任务。

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 还会把模式中出现的注释当作空白符直接忽。

/

    -?          #一个可有可无的减号

    [0-9]+      #小数点前必须出现一个或多个数字

    \.?         #一个可有可无的小数点

    [0-9]*      #小数点后面的数字,有没有都没关系

/x              #字符串末尾

组合选项修饰符

如果需要对单次匹配使用多项修饰符,只需要把它们接在一起写在模式末尾(不用在意先后顺序):

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的版本,但单词字符的定义取决于本地化设定

你可能感兴趣的:(修饰符)