00:00
大家好,欢迎大家继续收看上硅谷的云计算课程,我是沈超老师。这节课呢,我们来举几个正则的例子啊,哎,我们前面把正则讲完了,对吧,那我们还是说正则其实最主要的作用呢,其实就是做字符串过滤,那其实我们一般来说,在我们的系统编程当中,我们一般是做文本过滤的。哎,也就是说我这个文件里边有哪些数据,我要把有用的数据提出来,没有用的数据呢,我把它过滤掉,那如果是要做文本过滤啊,其实不用写太复杂的正则,就所以所以事儿我说他才把正则分成了基础正则和这个扩展正则,那技术正则其实对我们来讲其实已经绰绰有余,足够实用了。那么这种情况下,我们说啊,其实我们大多数情况就像我们上节课举的那个例子。就是过滤一个root呀,就过滤个包含有root的呀,或滤或者过过滤一个不包含有root呀,就过滤关键字就行。
01:02
但是呢,正则啊,其实如果说是要写复杂正则其实一般都是用在网页上外部外部。就是外部端。那么外部端它做过滤的时候,他们需要做粗过滤,就先把明显不合格的东西给过滤掉,然后呢,把再通过什么程序,如果还需要,那我们就可以通过程序再做精细过滤,它是这样的一种情况,OK,那虽然话这么说啊,我们为了举这个例子呢,那我们就写一下过滤一下邮箱,诶前面手机号我是不是已经写过了,对吧,这样的是手机。出过滤嘛,对吧,那我们今天就举个例子,过滤一下油箱和过滤下一批我们尝试用正则来完成,那首先我们来看一下油箱。呃,为了节省时间啊,这个东西比较麻烦,所以我就直接写好了,我放到这儿了,然后我就看一下首先。一字母这个也就是说我们的邮箱是不是都应该是这样的SC@163.com对吧?假设我随便编一个对吧,那也就是说艾特前面是不是应该有字母,所以看这里写的是数字任意数字任意小写字母,任意大写字母,然后下划线,然后呢,加号重复一次或者这这个任何多次对吧,加号扩展政策。
02:21
对吧,那也就说这是扩展正则啊,要用gra-E杠大E或者e gra同命令才能识别,OK,那么加号的意思就是重复任意多次,也就是说在艾特前面最少要有一个字母,一个数字和或者一个下划线。OK,其色后面是后面就是艾特了对吧。艾特后面干嘛,后面是不是还会有这样一个域名的这样一个提示对吧,那这里就是也是字母数字下划线啊字母然后数这这个字母数字下划线,然后重复最少一次对吧?然后后面反斜杠点。
03:01
各位,这里就是什么这个东西,第二反斜杠的意思是把它转成普通字符串,OK,然后呢,后面再重复这个最少一次,OK,然后呢,这个允许你到一到三个,一到三个居多啊,就是这一组啊,把它这个这个点后面这个数可以允许重复一到三次啊,那其实就是匹配这样一个东西,好了,这个我们试一下看行不行,那我为了做实验,我事先建好了这样一个。迈尔的T啊,我把这个挪一下。把它挪到SS这个项目,就12脚本当中啊,把这两个啊,我把这两个事先写了两个,这个就是邮箱的这个例子啊,我们进去看一下。那好,我们打开这个迈尔的这个,可以看到有正常邮件,这两个是,那剩下的这个啊,这个也是正常邮件,那剩下的这个看明显的不符合,没有艾特符,没有点。com或者点CN这样的结尾,对吧?那我看看我能不能通过正则把正确邮箱给过滤出来,对吧?那好,那我们怎么办呢?各位我复制一下太长了,这个手工写太浪费时间,而且出错的几率比较高,那我们记得。
04:16
啊。大意,然后加正则,我们正则,然后在这个迈尔的文件这个来过滤这个邮箱,我们可以看到,哎,他把明显不符合规则的这个地址是不是过滤掉了,写出来的是不是都是基本符合邮箱格式的,对吧?OK,那这就是邮箱的正则,大概看一下就行啊对,多说一句啊。我们前面说啊,这个重复一次或者重复N次以上,或者N次到M次之间,这里是不是需要加一个反斜杠才能识别这个大括号,对吧?这里为啥没有加,原因格杠大意的话,它就会变成这种,就是跟其他语言类似的这种正规的正则格式了,正规正则格式是不需要这样写的,它就能直接识别啊,反而加了反斜杠会出问题,OK啊,那也就是说如果加了格杠一这个地方的这个反斜杠就是不需要OK啊,需要这个事儿,那gra普通graph在这里需要好,这是过滤油箱的。
05:18
我们看就行,其实我说我只是举个例子,这个东西对我们写12编程来讲,真用不着这么复杂的政策,就看懂就行,然后呢,我们来看看如何过滤IP。各位。说到IP啊,超哥一度曾经断言说,用正则几乎没有办法过滤IP。因为什么?因为IP太复杂了。用正则来想过P几乎不可能,或者说要不然就是你会写一个无比长的这样一个正则格式,看起来极其的痛苦。所以超哥觉得啊,我们后来就给学员建议啊,我们是啥,如果你真的要想过滤合理IP,我们建议用程序来完成,后面我也会教你用程序来过滤IP的这样一个事儿,程序我也会写,OK,那我说为什么说IP太复杂了,正则过滤不了呢?那我们来分析一下各位,IP可不是三个随机数,为啥如果是三个随机数,它是从最小000到最大999。
06:24
这是三个随机数,就是三组数对吧,我们都知道我们的IP不是这样的,我们的IP是啥,从E。点0.0.0~255.25.255最大是255吧,那我们就就写它最大应该是从。哎,他的IP应该是从一到255的。而不是从零到九,九九。所以你不能写三个任,就是任意数字重复三次,这就是IP不可能。那如果真要拿正则来写IP啊,那我告诉你,我们要分析什么是这样,如果。
07:03
百位数。十位数、个位数。如果百位数是零,那么十位数是零到九。个位数也是零到九,没错吧。那如果百位数是一,个位数,十位数也是零到九。个位数是零到九,也就是说我允许从一百一百点开始到199,这个IP是不是都是相满对吧?好,那但是如果百位数是二呢,那么十位数如果是零到四,那么个位数是零到九。而如果十位数是五,个位数可设零到五。看到了吗?因为我们说了IP是从一到255啊。你看见了,看到了它不是占到999,所以这么复杂的一个正则超哥一度作业这个玩意儿几乎就写不了,哎,其实我说。我根本就不想去这个动脑子去想这么一个复杂的东西,我根本就还没开始写,我一看我的这个分析,哎,我跟你讲这个分析啊,就是其实是所谓的编程思想。
08:11
OK,没错吧,我一看这个分析我就觉得够了,我够够了,我也不想再写,那么但是呢,各位我们的学员当中有咱们的这个云计算工程师啊,或者说运维工程师啊,一般都会这个,每个班级里都会有那么三四个曾经学编程的,诶他学了编程,干了一段时间之后,他觉得什么,他觉得他这个,呃,这个工作到了瓶颈,或者说说白了他想挣更多的钱。那么最典型的这个晋升方向就是学一下linus,学一下架构,然后转这种更高级的这个项目经理,或者是架构师转这样的方面。所以啊,我们班级里有编程学员。那么编程学员呢,尤其是外部编程学员,就网站的编程学院,网页编程学这个同学,他们就是正则呢,其实要比超额更熟悉,其次呢,我又把这个思路告诉他们。
09:04
结果呢,就有人写出来了这样一个政策,P配P了,后来我看了没问题,而且是正常能用了,所以我就把它当例子交给你们,大家看看就行。我也再说一遍,如果你的目标就是写这个,写12程序,根本不需要这么复杂的动作,OK。当然啊,这个例子啊,是其中一个写法,我们后面啊,就是在其他班级的学员,也有其他的学员写出了另外一种完全不同的写法的这种政则,哎,有两种不同的写法啊,就是至少这是学员写出来,就是说这个东西就是你只要不是照着抄啊,这个理论上来说,你写的东西肯定和别人不一样,能实现就行,那我们来看看IP。那我们来看看。首先。我必须以IP开头和IP结尾,也就是说我要过滤的这个地址,我们看一下IP,这个地址里面只能有IP。而不能有什么,比如说用户名和用户名。
10:03
啊入。后面再加IP这个就不行,这个就要先通过正则把用户名给排除掉,只提取出来IP,这个我们后面马上就会教大家怎么来提取这个数据,可以啊,那也就是说我需要有一个干净的只有IP的这样一个文档,然后呢,我要求这里是IP开头,IP结尾,好,然后我们来看看。这里写的啥?或者啊,首先。一个数或就是说只有个位数,个位数是零到九,我们前面讲过,个位数是不是可以是零到九?对吧,这是第一个数对吧,那么或者呢,十位数是一到九。十位数是一到九。这啊,十位数是一到九,个位数是零到九,再或者然后后面是点分开啊,再或者百位数是一。各位,如果没有百位数,那十位数是不是就必须是一,如果十位数是零,那不就是个位数嘛,对吧,所以或这个地方是一到九,然后呢,或者是百位数,如果是一了,十位数和个位数都是零到九,那如果百位数是二呢?这都是或者往后排。
11:15
那么十位数是零到四的情况下,那我们说了啊,百位数是二,百位数是二。十位数是零到四,那么个位数是不是就零到九,那么十位数如果是五,个位数是不是零到五,对吧,它就这么写了,然后反向杠点结尾,也就是说第一个数是把第一个数写完点结尾,哎,第一个假设192,然后点结尾这个意思,然后如果百位数是二。十位数是五,那么个位数就是零到五,哎,第二结尾重复三次,同样啊,又是这句话格杠大意的情况下,这个不需要加反斜杠,OK啊好重复三次,然后呢,再把这个这后面这个和第一个是一样的,又写了一遍,为啥他要以这个数结尾,所以它没有写成重复四次。
12:05
OK,就是说有个千位符,有开头,有结尾,这样的话,如果你有五位数,比如说111.1.1.1.1,这个就会过滤掉了,明白他就不合理了,能听吗?他要的是不是只有四位数,所以他这里没有重复四次,因为正则是包含匹配,他后面又写了一遍,让这个数结尾。这个后面这个我不再多写了,都说了,这个就和前面这个是一模一样。OK,好了各位,看起来好像是不是跟我刚刚思路一模一样,但是我告诉你啊,这玩意儿你要自己写,你想这个中括号啊,这个两个小括号什么各个小括号把它括起来对吧,是否有没有反斜杠,这个中括号括在这个这个或者是小括号外边还是里面都得试,很麻烦的啊,我看了我就脑袋疼,但是这个能有,那我这里准备好了,例子例子我们能看到有这两个和。
13:03
只有这两个是合反应P啊,为啥这个是300大于二,255,这个是不是也是300,这个是呢,没有分割,只有一组数,这个是只有三组数对吧?那我们应该是不是只能过滤出来这两个对吧?那我们试试。Grape。杠大一,然后加正则,那我们复制了啊,这玩意儿太麻烦了,手工线。哦对,双引号不要,那我们从这竖起。好,太麻烦了,手工写啊,手工写太麻烦了不是,然后呢,在IP这个文档里,好,我们能看到是不是把合理IP过滤出来了,其他的这些情况都不合理,那三个能过滤掉,那五个就三个数能过滤掉,那五个数肯定也能过滤掉,如果有兴趣你可以自己试试,OK,行了,这里呢,我们就是把正则举两个例子,那我再说,如果拿事儿写正则,根本用不着这么复杂。
14:00
他就是给外部程序员,就是给这个网页来用的,我们既然学了,我们就举这样两个例子,然后呢,让你们来加深一下理解,了解一下就好,扩展一下当兴趣玩就可以OK好了,那这样的话,我们的正则就OK了,我们就讲到这儿了,好各位,那这节课的内容就是这样,我们下节课再见。
我来说两句