编程小白的自学笔记三(Python正则表达式)

举报
踏破千重浪 发表于 2023/07/26 22:48:30 2023/07/26
【摘要】 爬虫必备知识:正则表达式

文章目录

前言

一、预定字符"\d"

二、预定字符"\s"

三、预定字符“\w”

四、参数re.A

五、限定符

总结


前言

之前一直听说正则表达式,而且还比较难,今天终于接触了,做好了啃硬骨头的准备,让我们一起感受一下。

一、预定字符"\d"

咋一看的印象,正则表达式就好像我们查找文件用的通配符,具体能用在哪些场景,我还是具体学习吧。

第一个题目就是用正则表达式匹配数字。使用正则表达式需要导入模块re,re模块是内置模块,不需要导入,可以直接使用,可以使用findall方法自动将表达式和字符串匹配,具体代码如下:

import re
string = '每天3问是哪个人才想出来的4.56'
print('匹配数字:',re.findall('\d',string))

最后的输出结果是匹配数字: ['3', '4', '5', '6'],可以看到数字全部输出,输出结果保存在一个列表里。\d的意思就是0-9的数字

二、预定字符"\s"

预定字符\s匹配的是空白字符,空白字符就是换行、退格、换页等字符。具体代码如下:

import re
string = '每天3问 是哪' \
         '个\\脑子\n想出\t来\f的4.56'
print('匹配数字:',re.findall('\s',string))

 运行结果为:匹配数字: [' ', '\n', '\t', '\x0c'],我们发现\\没有打印出来,我还试了\a、\b、\e都打印不出来,难道他们不属于空白字符?

三、预定字符“\w”

 “ \w”匹配非空白字符,那就是作用与“\s”相反,我们来试一下。

import re
string = '每天3问 是哪' \
         '个\e脑\a子\n想\b出\t来\f的4.56'
print('匹配数字:',re.findall('\w',string))

 输出结果为:匹配数字: ['每', '天', '3', '问', '是', '哪', '个', 'e', '脑', '子', '想', '出', '来', '的', '4', '5', '6'],我们发现数字、字母和汉字都匹配出来了。

四、参数re.A

findall方法还是带参数的,上个例子中,我们输出了数字、字母、汉字,如果我们不想匹配汉字,就可以带上参数re.A,代码这样写print('匹配数字:',re.findall('\w',string,re.A)),输出结果为:匹配数字: ['3', 'e', '4', '5', '6'],果然没有了汉字。

五、限定符

书上说*号表示匹配字符串0次或者多次,?表示匹配字符串0次或者1次,例如o*r表示匹配字母o0次或者多次。

感觉有点难理解,我个人觉得这样说好一点,o*r表示有多个连续的o或者没有o加上r就能匹配,例如:r,or,ooooor等。同理o+r就是至少有1个o加上r才能匹配,例如or,ooor。r是不符合表达式要求的


总结

以上就是今天学的内容,正则表达式在应用中使用的很广,特别想从事爬虫的,一定要会。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。