首页 > 其他 > 详细

perl学习(3)模式匹配与正则表达式

时间:2018-03-19 20:26:29      阅读:256      评论:0      收藏:0      [点我收藏+]

标签:....   表达式   正则表达   pos   匹配模式   模式匹配   $2   多个   info   

一:模式匹配中的特殊字符

1:  点号 .

     匹配任何单个字符(换行符\n除外)

2:  反斜线 \

    转义字符,用于特殊符号前,使其失去特殊字符的作用变成普通字符

3:  +

    匹配该字符前面的字符(单个)至少一次;1次,2次...n次

4:  *

    匹配该字符前面的字符任意次:0次,1次...n次

5:  ?

    匹配该字符前面的字符0次或者一次

6:  .*

    匹配任意字符任意次(换行符除外)

7:  {count}

    匹配前面的字符count次

8:  {min,}

    匹配前面的字符至少min次

9:  {min,max}

    匹配至少min,至多max

10:  *?

    匹配该字符前面的字符任意次:0次,1次...n次,倾向于短字符,非贪婪

11:  +?

    匹配该字符前面的字符(单个)至少一次;1次,2次...n次,倾向于短字符,非贪婪

12:  ()

    模式分组字符 eg:/(perl)+/  #有()匹配模式是perl,没有括号,匹配模式是单个字符l;

    1)借助模式分组,可以使用\number的方向引用来引用括号内匹配的内容,n和括号内的组号匹配

    技术分享图片

    2)perl 5.10可以使用\g{number}这种形式的反向引用,n可以为负数

    技术分享图片输出:技术分享图片

 

13:  |

    或,即匹配左右都可

14:  例子

    技术分享图片输出:技术分享图片

 二:  字符集

   字符集是指一串可能出现的字符集合。通过写在方括号([ ])内来表示。只能用来匹配单个字符,但可以是方括号内列出的任意一个   

     技术分享图片输出:技术分享图片

1:  可以使用字符 - 进行简写; [0-9]表示0到9十个数字

2:  可以使用脱字符 ^ 匹配字符集外的字符

3:  字符集简写

    技术分享图片

    说明:\d 匹配任意的数字, \w匹配任意的字母数字下划线 ,\s匹配任意的空格,

     技术分享图片

4:  例子

    技术分享图片输出:技术分享图片

    问题:test_id = 20010的\w\s+匹配一个字符多个空格;按道理匹配不了啊,但输出匹配成功

5:  常用字符集

    /[\dA-Fa-f]+/   :匹配16进制数

    /\d\D/              :匹配任意字符

    /^\d\D/            :什么字符都不匹配

四:  模式匹配操作符与修饰符

1:   操作符

      在前面的介绍与例子中,我们使用 // 来进行匹配(实际上是m//);

    模式匹配操作符可以使用任意成对的定界符,当使用斜线作为定界符时,开头的m可以省略

    eg:m(fred),m<fred>,m{fred},m[fred]

      m%https://% 

2:  修饰符(在操作符后面,其实与操作符的/符号合用)

    1)/i  

     进行模式匹配时,将不区分大小写

    2)/s

    模式中的点号将匹配包括换行符在内的任意字符(注意与\s区分开来,\s是字符集里匹配任意的空格的简写)

    3)/x

    忽略空白符,使用/x修饰符可以在模式里面随意加上空白,使其更容易阅读。

五:  锚位

1:  ^

     标志字符串的开头

2:  $

    标志字符串的末尾,eg:/^\s*$/

3:    /b 指定特定的单词

    单词(\w+)锚位,匹配任何单词的收尾

4:  /B

    非单词锚位,匹配所有/b不能匹配的位置

 5:  例子

    技术分享图片输出:技术分享图片

 

六:  绑定操作符=~

    默认情况下,模式匹配的对象的$_,绑定操作符=~用于告诉perl拿右边的模式匹配左边的字符串,而不是匹配$_变量中的字符串

     技术分享图片

 

七:  模式串中的变量内插

    例如:

    my $val = "just";

    my $val2 = "This is just a test example";

    if ($val2 =~ /($val)/) { .... } #正则表达式中的变量内插,if ($val2 =~ /$(val)/)也可。

八:  捕获

    把圆括号内的字符串暂时记忆下来的能力,如果有多个圆括号,就有多个捕获。捕获变量都是标量变量,依次为$1,$2...$n

1:  

 

 

    

 

perl学习(3)模式匹配与正则表达式

标签:....   表达式   正则表达   pos   匹配模式   模式匹配   $2   多个   info   

原文:https://www.cnblogs.com/xh13dream/p/8604366.html

(0)
(0)
   
举报
评论 一句话评论(0
0条  
登录后才能评论!
© 2014 designnerd.net 版权所有 鲁ICP备09046678号-4
打开技术之扣,分享程序人生!
             

鲁公网安备 37021202000002号