0804正则表达式作业

  1. 用正则表达式表示IP地址

        首先来分析一下,制IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节)。IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。例:点分十进IP地址(100.4.5.6),实际上是32位二进制数(01100100.00000100.00000101.00000110)。ip每一位的值0-255,用数值来匹配,我会分成一位数值,两位数值的,和三位数值的,还有一个地方需要注意,那就是取255的时候不能取到259,这样就超出了范围,具体如下:

      ifconfig|grep -Eo –color=auto "\<([0-9]|[1-9][0-9]|1[0-9}{2}|2[0-4][0-9]|25[0-5])\>\.\<([1-9]|[1-9][0-9]|1[0-9}{2}|2[0-4][0-9]|25[0-5])\>\.\<([0-9]|[1-9][0-9]|1[0-9}{2}|2[0-4][0-9]|25[0-5])\>\.\<([1-9]|[1-9][0-9]|1[0-9}{2}|2[0-4][0-9]|25[0-5])\>"

   

     ifconfig  |grep -Eo "(\<([0-9]|1[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]\>)\.){3}(\<[0-9]|1[0-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]\>)" –color=auto

    ifconfig | grep -o '\b[0-9]\{1,3\}\b\.\b[0-9]\{1,3\}\b\.\b[0-9]\{1,3\}\b\.\b[0-9]\{1,3\}\b'

    哇塞这也太长了把,对没错是很长,好现在我来拆分来讲解下

    [0-9]:这个很容易理解,表示的是一位数,正则表达式中一位表示的意思匹配任意单个字符,那我[1-9]匹配的就是从0到10的数字。

    [1-9][0-9]:这个表示的是两位数字,两个中括号就必须要匹配两个数字,个位数[0-9]可以随意变换,十位数也是如此,个位数和十位数随意组合就成了从10-99之间的数字了。

    1[0-9]{2}:这个表示的是三位数,百位数是1,十位数从0到9随意变换,个位数也是如此,最终随意组合组成的数值就是从100-199的数值了。

    2[0-4][0-9]:这个就有点特殊了,因为ip的最大值是255,我要是直接这样匹配2[0-5[0-9],这个数字就到259了直接超出范围,我把十位数限制在4,个位数可以随意变换,最终组成的数值就是200-249了。

    25[0-5]:这次我直接把百位数和十位数给指定,个位数就在0-5之间随意变换,最大的数值固定在255,最终组成的数值就是250-255了。

ip地址由4位十进制数值组成了,把匹配的项分组四组,但是ip地址之间是有个“.”的,“.”在正则表达式中表示任意单个字符,这里就需要用“\”来进行转意了,最终组成成四组就是匹配ip地址了。

1.jpg

QQ截图20160808092710.jpg

3.jpg

    2. 用正则表达式表示手机号

      

  grep -Eo "^\<1[3578][0-9]{9}\>"

        grep -Eo"\<(139|138|137|135|134|159|158|157|150|151|152|188|130|131|

132|156|155|133|153|189)[0-9]{9})\>"  filname

    grep -Eo "\<(13[0-9]|15[[01356789]|18[01235789])[0-9]{8}  filename

        固定前三位号码段,后面9位数字随机变换。

1.jpg

        3.用正则表达式表示身份证号18

        我国现行的二代身份证号码是按国家质量技术监督局于1999年7月1日实施的GB11643-1999《公民身份号码》标准执行的。由17位数字本体码和
1位校验码组成。排列顺序从左至右依次为:6位数字地址码,8位数字出生日期码,3位数字顺序码和1位校验码,地址码的第一位数值的取值范围是1-8,这里的年份我从1900至2099,身份证具体编码规则:http://baobao.sohu.com/20160512/n449226463.shtml

     grep  -Eo  "\<((1[1-5])|(2[1-3])|(3[1-7])|(4[1-6])|(5[0-4])|(6[1-5])|(71|81|82))([0-9]){4}(19|20)([0-9]){2}((0[0-9])|(1[0-2]))(0[1-9]|(1[0-9])|(2[0-9])|(3[0-1]))([0-9]){3}([0-9]|x)\>"

1.png


        4、用正则表达式表示邮箱

      邮箱的格式是由用户@主机名组成,通常为username@servername.com

      cat mail|egrep "\<([[:alnum:]]+(-|_)*[[:alnum:]]*)\>@([[:alnum:]]+\.)+[[:alnum:]]+"

      邮箱格式由大小写字母数字下划线等组成,alnum是数字字母的组合,让他匹配多次,横杠和下划线可有可无,所以用*来匹配,主机名也是有数字字母中间中间还有个“.”点这个地方需要转意,不然表示的就是任意的单个字符了

2.png



       

原创文章,作者:fszxxxks,如若转载,请注明出处:http://www.178linux.com/30638

(0)
上一篇 2016-08-10 10:27
下一篇 2016-08-10 10:27

相关推荐

  • Linux的程序包管理,RPM,yum及编译安装简介

    Linux的程序包管理,RPM,yum及编译安装简介   Linux的程序包,指的是ELF格式的二进制应用程序文件所组成的软件包。它一般由二进制文件、库文件、软件配置文件及帮助文件等组成。而对这些包进行管理的工具,主流分为两种,在debian上,用的是apt-get管理deb包;在redhat上,主要用rpm作为软件包管理工具。在这里,我简单的介绍…

    Linux干货 2016-05-29
  • nginx+varnish+httpd小试牛刀

    简介: Varnish 是一款高性能且开源的反向代理服务器和 HTTP 加速器,其采用全新的软件体系机构,和现在的硬件体系紧密配合,与传统的 squid 相比,varnish 具有性能更高、速度更快、管理更加方便等诸多优点; 此次试验的目的是让Nginx做前端访问负载均衡,varnish代理后端的web服务器,并缓存结果 1.准备机器,做好时间同步,主机名解…

    Linux干货 2017-06-27
  • 如何解决生产机上php代码连接mysql报错的故障

    大家好: 今天分享一则当生产机上的网站php代码不能连接Mysql服务器时怎么办? 当LNMP的网站建立好后,我们需要测试网站中的php代码。但发现如下报错怎么办? 解决方法如下:  mysql> show databases; +——————–+ | Dat…

    Linux干货 2016-12-18
  • 权限命令总结

    修改文件权限:chmod 1 2 3 4 [root@centos7 ~]# man chmod        chmod [OPTION]… MODE[,MODE]… FILE…    …

    Linux干货 2016-08-04
  • 文本处理三剑客之一的sed

    处理文本的工具sed Stream EDitor, 行编辑器 sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Se…

    Linux干货 2017-04-27
  • openssl、openssh

    openssl 传输层协议:TCP,UDP,SCTPport:进程地址,进程向内核注册使用某端口(独占) 同一主机上的进程间通信:IPC, message queue, shm, semerphor 不同主上的进程间通信:socket cip:port <– –> sip:port cip:55673 <&#8211…

    Linux干货 2017-05-31