开发者学堂课程【高校精品课-华东师范大学 - Python 数据科学基础与实践:正则表达式4】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/1067/detail/15404
正则表达式4
后面需要结合另外一个方法,比如说 re.sub 方法,您结合这个方法实现信息的提取。那么首先看一下 re.sub 方法,那么这个 re.sub 方法来做字符串替换的,第一个参数需要传入正则表达式,第二个参数就是需要传入替换字符串,第三个参数是原字符串传过来,运行一下,看一下结果就是把原来1234567替换过来,那么再看一下第二个结果,把第二个参数直接改变一个内容,然后看一下结果,可以看到原先的1234567,整个的数字字符串,他就可以指定的第二个参数了。
所以说 re.sub 函数是把所符合正则表达式的这个字符串替换成要指定的字符串,是非常方便的实现替换,那么接下来就有一个问题,如果要替换的目标是原字符串本身或者说包含原字符串,我在这里就可以把配的正则表达式加一个括号,意思就是可以知道括号里面可以用,那么在这里可以反斜杠1,然后拿到他的匹配内容,然后这里值得注意的地方是因为这个反斜杠一是一个转移的字符,要保证一个原生的字符,在前面加一个二,那么这样就可以正常的完成替换。
那么看一下这个运行结果,这个运行结果里面输入了123 4 5 6 7 8 9 10,比如说这个杠1括号里面的内容拿出来做了一些替换,这个就有了一个正常的输出,再返回刚才的例子,可以看到在这里加了一个空白字符判断,加了一个超链接的是否存在的一个判断?
然后后面也有一个判断。有了这个 sub 函数可以直接正则表达式题库把刚才的 a 标签完全替换掉,那么接下来可以直接用 of 这个 ,那么这样的话可以首先写一个 sub ,然后把这个a标签开头和结尾替换掉,第二个参数就直接传入一个,第三个参数直接传入过来,接下来看一下运行结果,接下来看一下 html 里面它把所有的a标签已经删除了,接下来再用Find all.方便了,后来再用find oall写一个正则表达式把所有的歌名就是li标签里面提取,那么首先用一个 result findall,第一个表达是传,后面直接用小括号起来匹配内容,第二个参数是hyml ,第三个参数 re.s,匹配换行符,下来把 result 打一输入一下,可以看到下面的正常输出,这六个歌名,这歌名里面可以看到一些换行符,这是因为直接匹配的二标签里面的内容,标签里面有的有换行符有的没有换行符,它的结果里面可能没有换行符,接下来就变了一下,结果输出一下,看一下输出结果,用一个方法去掉,可以看到这里是正常的输出的英文歌名。
那么就用 sub 方法,Findall 方法两者的结合实现了查询,相对于刚才的正则表达式的写法,逻辑上更加的清晰,实现的更加方便。那么现在就是把一些常见的表达式的用法介绍完了。
回过头来看一下,re.match 方法从起始位置开始匹配,然后主要是用来验证正则表达式是否匹配方法,1搜索整个字符串,找到符合正则表达式的第一个结果,如果要找寻所有的匹配结果,可以用 re.findall 然后传入一个正则表达式,都会找寻的正则表达式所有结果,那么如果要做一个字符串替换,可以用 re.sub方法替换的正则表达式的对象,然后再把代替换的传过来,就可以完成整个的字符串替换。那么以上的这几个方法非常常用的。
那么接下来再看一个方法 re.compile ,那么这一个方法则表达式变成任意一个表达式对象这一个方法。那么刚才注意到之前的几个方法都是直接传入正则表达式字符串,那么如果以后想复用这个字符串,不能总是把字符串重新写一遍。
那么所以这个方法把这个字符串变译成正则对象,以便于后面直接复用匹配模式。接下来调用一下 comple 方法,第一个是传入这个正则表达式,第二个是可以传入这个匹配模式,然后把它传给 match 方法,看一下结果可以正常匹配,那么再对比一下原来的 match 方法,再用原来 match 方法写一遍,第一个传入正则表达式,第二个传入正则表达式原字符串传递进来,第三个参数再把结果传递过来,可以看到这个结果是完全一样的,也就是说这两步等于原先的下一步,为什么这么写?
因为如果以后想要复用一个代码的话,直接复用 就好了,不需要再重新写一遍正则表达式,是以便于后面的正法复用。