首页 python正文

python re.M使用详解

启明SEO python 2022-03-19 12:25:43 1297 0 python正则表达式re

re.M 多行匹配,影响 ^ 和 $

看如下代码:

s = '12 34\n56 78\n90'
ss=re.findall(r'12(\d)0', s,re.M)

打印ss,结果是空。

再看看我们这样写

ss=re.findall(r'\d', s,re.M)

打印结果是['1', '2', '3', '4', '5', '6', '7', '8', '9', '0']

ss=re.findall(r'\d+', s,re.M)

打印结果是:['12', '34', '56', '78', '90']

ss=re.findall(r'^\d+', s,re.M)

打印结果是:['12', '56', '90']

ss=re.findall(r'^\d+$', s,re.M)

打印结果是:['90']

ss=re.findall(r'\d+$', s,re.M)

打印结果是:['34', '78', '90']

总结:re.M换行后,需要重新匹配规则,如果在当前行没有规则匹配内容,就会返回空。所以,当我们在使用bs4采集网页内容的时候,想使用,re.sub('','',str,re.M)来进行多行匹配替换,是不可行的。如要将这些字符替换成空

<div class="reed-xiongzhanghao">
<script>cambrian.render('body')</script>
</div>

使用re.sub('<div(.*?)</div>','',str,re.M)是不会成功替换的。这个时候我们我们如果想要得到效果就得先对str进行将换行符替换为空的步骤:

re.sub('\n','',str)

然后再使用上面的规则进行替换,就能够达到预期效果

评论

Python好学公众号

好文推荐

实时访客入口页面出现bd_vid=标识是什么原因

实时访客入口页面出现bd_vid=标识是什么原因

最近查看百度实时访客,总是会看到入口页面会多......

有了微信视频号,但是没有发布权限,怎么开通

有了微信视频号,但是没有发布权限,怎么开通

视频号是微信在2020年1月19号开始内测的......

如何用python抓取爱企查企业信息

如何用python抓取爱企查企业信息

前段时间,经理让我去找一些企业的信息,我平常......

服务器配置低,宝塔面板安装IIS总是安装不上怎么办

服务器配置低,宝塔面板安装IIS总是安装不上怎么办

对于一般企业网站或者博客来说,对服务器的配置......

如何修改浏览器指纹,Canvas指纹、Webgl指纹、Audio指纹修改方法?

如何修改浏览器指纹,Canvas指纹、Webgl指纹、Audio指纹修改方法?

修改浏览指纹的方法其实也是很简单,主要使用到......

win10下安装MYSQL后,提示Can't connect to MySQL server on localhost (10061)相关问题解决方法

win10下安装MYSQL后,提示Can't connect to MySQL server on localhost (10061)相关问题解决方法

我遇到的问题是电脑原先安装过mysql,卸......