首页 > 编程 > Perl > 正文

强大的Perl正则表达式实例详解

2020-06-04 20:33:37
字体:
来源:转载
供稿:网友

一、介绍

正则表达式各语言都有自己的规范,但是基本都差不多,都是由元字符的组合来进行匹配;由于Nmap内嵌的服务与版本探测是使用的Perl正则规范,因此此篇博客记录一下Perl正则的相关内容,方便后期查阅。

二、Perl正则例子

下面的例子可能有不足之处,有些来源于博客,没有验证;

1. 匹配IP地址:/d+/./d+/./d+/./d+

               /d:匹配一个数字字符,/d+:匹配一次或多次数字字符。

               /.:使用转义字符匹配'.'。

2. 匹配邮箱类似于123456@qq.com: /^[a-zA-Z0-9_/-.]+@[a-zA-Z0-9_/-]+.[a-zA-Z]+$/

        ^: 匹配开头

        $: 匹配结尾,这两个保证了这是连续的一串字符。

3. 匹配数字:m/^[0-9]+$/

       由^开头由$结尾保证了只含有数字,如果只有结尾$,那么abc12这种也是可以的。

       可用在输入校验,校验输入的是否是数字。

4. 用户输入温度(华氏温度,摄氏温度),编程进行转换

    m/^([-+]?[0-9]+)([CF])$/ :匹配正负整数温度。

        [CF]: 匹配中括号其中的一个

        ?:匹配前面的子表达式0次或1次

        +:匹配前面的子表达式一次或多次

        perl通过临时变量$1,$2保存子表达式匹配的文本。$1保存的是数字,$2保存的是符号。

    m/^([-+]?[0-9]+(?:/.[0-9]*)?)/s*([CF])$/i) :添加支持小数的温度匹配

        临时变量保存的顺序与分组的开括号 ( 在表达式中的顺序有关(从左到右);因此这个地方使用?:,代表该括号匹配的值不被临时变量保存。

        /i: 代表忽略大小写匹配,cf也匹配。

    参考地址:https://segmentfault.com/a/1190000004375773(精通正则表达式(第三版))  

5. 匹配空白行

  ^$  : 开头之后马上结束:空白行,不包括任何字符

  /n/s*/r

     /n匹配一个换行符,等价于/x0a
     /s匹配任何空白字符,包括空格制表换页
     /r匹配一个回车符,等价于/x0d

6. 匹配首尾空白字符: ^/s*|/s*$

7. 匹配版本号1.3.0等

  [/d.]+

8. 匹配某个字符以外的所有字符:

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表