Perl 正则详述

Perl 正则详述,第1张

概述模式匹配,在字符串中寻找特定序列的字符 指定模式:由斜线包含,/def/即模式def。 匹配 *** 作符 =~、!~ 模式匹配的3种类型: m//模式匹配,s///匹配并替换(类似linux的sed命令), tr///逐一替换,翻译 +: 一个或多个相同的前导字符(模式). 如:/de+f/ 匹配的是def,deef,deeeef等。 如/d[eE]+/,匹配de,dee,dE,dEE,deE,dEe. 模式匹配,在字符串中寻找特定序列的字符 指定模式:由斜线包含,/def/即模式def。 匹配 *** 作符 =~、!~ 模式匹配的3种类型: m//模式匹配,s///匹配并替换(类似linux的sed命令), tr///逐一替换,翻译 +: 一个或多个相同的前导字符(模式). 如:/de+f/ 匹配的是def,deef,deeeef等。 如/d[eE]+/,匹配de,dee,dE,dEE,deE,dEe. * 匹配0个,1个或多个相同字符 ? 匹配0个或1个该前一个字符 . 匹配除换行外的所有单个字符,通常与*合用 .* 所有任意数量字符。 与前一字符结合,可不出现字符。 贪婪规则和懒惰规则: 贪婪规则: 尽量匹配尽可能多的相同字符,如/ab+/ 在字符串中匹配abbc中匹配的将是abb 而不是ab. 若表达式中出现两个重复符号,perl 遵守贪婪规则 [grID@devrac1 ~]$ cat a1.pl  $_="a xxx c xxxx c xxxx d"; if ( $_ = ~ /a.*c.*d/){print "111111\n"}; [grID@devrac1 ~]$ perl a1.pl  111111 “.*”会和第二个c之前的所有字符符合。  * + ? 都是贪婪的 在重复符号后加个问号,可以让它变得不贪心: /a.*?c.*d/; "a.*?c"会和最少的a,c之间字符匹配 [grID@devrac1 ~]$ cat a1.pl  $data='abbbbbbbbbbbbg'; if ($data =~ /ab(.+?)g/){print "1111\n"}; [grID@devrac1 ~]$ perl a1.pl  1111 .+ .*? 0个或多个字符开始匹配 .+? 表示至少一个字符 .+? ?? [grID@devrac1 ~]$ cat a1.pl  $data='abbbbbbbbbbbbgabbbbbbbbg'; if ($data =~ /ab(.*)g/){print "$1\n"}; [grID@devrac1 ~]$ perl a1.pl  bbbbbbbbbbbgabbbbbbbb 这里的$1 表示模式1 懒惰规则:模式匹配只要找到一个就停止。不再继续匹配 [grID@devrac1 ~]$ cat a1.pl  $data='abbbbbbbbbbbbgabbbbbbbbg'; if ($data =~ /ab(.*?)g/){print "$1\n"}; [grID@devrac1 ~]$ perl a1.pl  bbbbbbbbbbb 总结

以上是内存溢出为你收集整理的Perl 正则详述全部内容,希望文章能够帮你解决Perl 正则详述所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1274296.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存