• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Perl中的匹配(六)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

在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)


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
perl中的grep函数介绍发布时间:2022-07-22
下一篇:
perlSocket接收超时设置发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap