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)
fszxxxksfszxxxks
上一篇 2016-08-10 10:27
下一篇 2016-08-10 10:27

相关推荐

  • 招聘Linux运维工程师

    岗位职责: 公司集群硬件的日常维护及管理 负责公司内网的服务器安装,部署和维护 监控服务器状态,发现问题并及时维护 负责产品发布上线 承担mangoDB的日常巡检 集群数据服务器的备份 编写服务器维护脚本,减少工作量,提高工作效率 任职要求: 1年以上Linux系统管理经验,精通Linux的管理和维护 能够熟练编排查运维过程中出现的服务故障,系统故障,网络故…

    Linux干货 2017-12-04
  • zabbix快速创建筛选(sql操作)

        公司由于大量业务调整,尤其是服务器功能和性能的转变,监控也跟随这变化,其中操作最为繁琐的当数zabbix筛选(相信各位从页面添加的都深感痛苦)于是有了本文。     本文采用的方法是sql操作(由于本人不会php等,无法写程序直接调用官方api,所以,嘿嘿,不解释,同时也希望各路大…

    Linux干货 2015-12-17
  • Keepalived实现nginx双主

    一、架构描述与应用 1. 应用场景 大多数的互联网公司都会利用nginx的7层反向代理功能来实现后端web server的负载均衡和动静分离。这样做的好处是当单台后端server出现性能瓶颈时可以对其进行横向扩展从而提高整个系统的并发,同时也可以通过后端server提供的http或tcp监控接口对其进行健康检查实现自动Failover和Failback。&n…

    Linux干货 2016-07-16
  • 给linux系统添加新的磁盘

    虚拟化环境中,我们经常会遇到需要增加磁盘容量的情况,通常有两种方式,第一种是添加一块新的硬盘,另一种是扩容原有磁盘,以下是添加新磁盘至linux系统的操作规范。注:具体磁盘信息可能有所不同。 ##查看新增加磁盘/dev/sdb的信息 [root@CentOS7 ~]# fdisk -l /dev/sdb   Disk /dev/sdb: 5368 …

    Linux干货 2016-11-11
  • Linux常见文件管理命令

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。2、bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。3、请使用命令行展开功能来完成以下练习:(1)、创建/tmp目录下的:a_c, a_d, b_c, b_d(2)、创建/tmp/mylinux目录下的:mylinux/├── bin├── boot│  …

    2018-02-26
  • vim编辑以及脚本编程练习

    vim编辑器的使用总结: vim在工作过程当中有三种模式:编辑模式、输入模式、末行模式。 1、编辑模式:即命令模式,键盘操作常被理解为编辑命令; 2、输入模式:在文本文件当中进行输入内容; 3、末行模式:vim内置的命令行接口,执行vim的内置命令。   vim的使用 打开文件 #vim[option]…[FILE] +#:打开文件后,直接让光标处…

    Linux干货 2017-10-29