正则

点号,匹配任何单字符的通配符(除了换行符\n)--------"abcde"=~/abc.d/

* 匹配之前内容零次或者多次 

*. 通配所有的字符串,捡破烂模式

+ 通配之前内容1次以上

? 通配前之前内容1次或者0

分组:


--------------

/i 忽略大小写

/s 匹配任意字符

/x 加入空白

      /-?\d+\.?\d*/  #挤在一起,看不清楚

      /   -?   \d+   \.?   \d*  /x #加入空白忽略之后,忽略空格

 -------------------------

$& 完整展示正则式匹配的内容

$' 匹配之后的字符串

$` 匹配之前的字符串

如:if ("hello there,neighbor"=~/\s(w+),/) {print "$& ;}

输出为:

my $na='hello there, neighbor';

if ($na=~/\s(\w+),/)

        {

        say $';

        say $`;

        say $&;}

输出为:

neighbor

hello

 there,

匹配次数:

my $na='aaaaaaaaaaaa, neighbor';

if ($na=~/(a{5,10})/)  #匹配出现a 5到10次的地方,如果a出现了20次,则只有前10个会匹配,如果省去右边的值,则匹配次数没有上限;如果省去左边的值,变为匹配单独的次数(如只有左边值{5},只有前5个会匹配

        {

        print $1 ;} # 这里的$1指,第一次匹配的地方,按左括弧计算

优先级:

         元括弧                       (.....),(?:......),(?<LABEL>.....)

         量词                             a* a+ a? a{n,m}

         锚位                             abc   a^   a$

         择一                             a|b|c

         元素                             a[abc]  \d   \1

优先级举例:

         如:/^abc|bar$/ 匹配开头有abc的,或者匹配结尾有bar的,结尾如果有abc,不匹配

                   /^(abc|bar)$/ 匹配不管开头或者结尾有abc或者bar的,结尾有abc,也匹配

正则匹配测试模板:

         while (<>)    { chomp;

        if (/.../)  #这里输入需要测试的正则式;

                             {

                say "$`<$&>$'";

                }else{

                        say "no match";

                        }

}


原文地址:https://www.cnblogs.com/agostop/p/2323091.html