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

相关推荐

  • CentOS7内核编译

    一.centos7内核编译(支持ntfs文件系统) 1.下载内核源代码内核文件(https://www.kernel.org/) 2.解压缩源代码文件到指定目录 tar xvf linux-4.8.10.tar.xz -C /usr/src 3.创建软链接解压后的文件 cd /usr/src ln -s linux-4.8.10/ linux 4.复制当前系…

    Linux干货 2016-11-28
  • magedu_20160808

    行编辑器sed与vim文本处理器     一.行编辑器sed的使用介绍     sed英文全称stream editor,行编辑器。其工作模式为将文件中内容按行转移至sed模拟空间中,根据地址判定此行是否匹配,如果匹配,根据命令输出并打印,如果不匹配,按照默认打印到屏幕上。它的作用是根据选项和地址界定‘scr…

    Linux干货 2016-08-10
  • MySQL/MariaDB基于MMM实现读写分离及高可用

    前言 MMM(Master-Master replication managerfor Mysql,Mysql主主复制管理器)是一套灵活的脚本程序,基于perl实现,用来对mysql replication进行监控和故障迁移,并能管理mysql Master-Master复制的配置(同一时间只有一个节点是可写的)。 MMM 优缺点 优点:高可用性,扩展性好,…

    Linux干货 2015-06-24
  • vim编辑器

    vim编辑器: 文本编辑器:文本,纯文本,ASCII text;Unicode; 文本编辑种类:                 行编辑器:sed                全屏编辑器:…

    2017-04-17
  • linux文件基本权限、默认权限、隐藏权限和ACL权限

    基本权限    文件属性rwx     每个文件当用ls -l查看时,都会显示文件的详细属性信息,其中在排在首位的共有10位字符信息     例如 -rw-r–rw-. 1 root root …….. 共有10位,第一位代表的是文件的类型,后边9位表示的是文件的…

    Linux干货 2016-08-04
  • linux快捷键

    $ 用法 $变量名 表引用变量的值 $()或(单引号) 表示引用命令执行的结果 $[] 表示运算 ${变量名} 或"$变量名" 当变量名的起止不分明时,用来划定变量名的范围,同时引用变量。 {} 用法 {a..z} 表示引用指定范围的字母 {1..9999} 表示引用指定范围的数字​ {1,3,5} 表示分别引用每一个字符 TAB 用法 …

    Linux干货 2017-07-13