在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
在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) |
请发表评论