编程小白的自学笔记三(Python正则表达式)
文章目录
前言
之前一直听说正则表达式,而且还比较难,今天终于接触了,做好了啃硬骨头的准备,让我们一起感受一下。
一、预定字符"\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是不符合表达式要求的
总结
以上就是今天学的内容,正则表达式在应用中使用的很广,特别想从事爬虫的,一定要会。
- 点赞
- 收藏
- 关注作者
评论(0)