加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Perl 正则详述

发布时间:2020-12-15 23:47:24 所属栏目:大数据 来源:网络整理
导读:模式匹配,在字符串中寻找特定序列的字符 指定模式:由斜线包含,/def/即模式def。 匹配操作符 =~、!~ 模式匹配的3种类型: m//模式匹配,s///匹配并替换(类似linux的sed命令), tr///逐一替换,翻译 +: 一个或多个相同的前导字符(模式). 如:/de+f/ 匹配的
模式匹配,在字符串中寻找特定序列的字符 指定模式:由斜线包含,/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 "222221n"}; [grid@devrac1 ~]$ perl a1.pl? 222221 “.*”会和第二个c之前的所有字符符合。 ?* + ? 都是贪婪的 在重复符号后加个问号,可以让它变得不贪心: /a.*?c.*d/; "a.*?c"会和最少的a,c之间字符匹配 [grid@devrac1 ~]$ cat a1.pl? $data='abbbbbbbbbbbbg'; if ($data =~ /ab(.+?)g/){print "1111n"}; [grid@devrac1 ~]$ perl a1.pl? 1111 .+ .*? 0个或多个字符开始匹配 .+? 表示至少一个字符 .+? ?? [grid@devrac1 ~]$ cat a1.pl? $data='abbbbbbbbbbbbgabbbbbbbbg'; if ($data =~ /ab(.*)g/){print "$1n"}; [grid@devrac1 ~]$ perl a1.pl? bbbbbbbbbbbgabbbbbbbb 这里的$1 表示模式1 懒惰规则:模式匹配只要找到一个就停止。不再继续匹配 [grid@devrac1 ~]$ cat a1.pl? $data='abbbbbbbbbbbbgabbbbbbbbg'; if ($data =~ /ab(.*?)g/){print "$1n"}; [grid@devrac1 ~]$ perl a1.pl? bbbbbbbbbbb

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读