【Python3 爬虫】U15_正则表达式
1.什么是正则表达式?
通俗解释:按照某个规则,从某个字符串中匹配出想要的数据。
官方解释:正则表达式,又称规则表达式,通常被用来检索、替换那些符合某个模式(规则)的文本。
2.匹配单个字符(常用)
2.1 匹配某个字符串
匹配某个字符串,指定一个字符,如he
,从hello
中匹配
import re
text='hello'
ret = re.match('he',text)
print(ret.group())
打印结果:he
2.2 .
匹配任意的字符
import re
text = 'abcdrf'
ret = re.match('.',text)
print(ret.group())
打印结果:a
2.3 \d
匹配任意的数字(0-9)
import re
text = '123'
ret = re.match('\d',text)
print(ret.group())
打印结果:1
2.3 \D
匹配任意的非数字(与\d作用相反)
import re
text = 'abc'
ret = re.match('\D',text)
print(ret.group())
打印结果:a
2.4 \s
匹配空白字符(\t,\n,\r,空格
)
import re
text = '\t'
ret = re.match('\s',text)
print(ord(ret.group()))
打印结果:9 (通过ASCII码表可以查到9就是制表符)
2.5 \S
匹配非空白字符(与\s作用相反)
import re
text = 'abc'
ret = re.match('\S',text)
print(ord(ret.group()))
打印结果:a
2.6 \w
匹配a-z
和A-Z
以及数字和下划线
import re
text = '_abc'
ret = re.match('\w',text)
print(ret.group())
打印结果:_
2.7 W
(与\w
作用相反)
import re
text = '#'
ret = re.match('\W',text)
print(ret.group())
打印结果:#
2.8 []组合的方式,只要满足括号中的字符,则可匹配
import re
text = '0871-96532'
ret = re.match('[\d-]+',text)
print(ret.group())
打印结果:0871-96532
3.匹配多个字符
3.1 使用[]
的形式代替\d
import re
text = '0871-96532'
ret = re.match('[0-9]',text)
print(ret.group())
打印结果:0
3.2 使用[]
的形式代替\w
import re
text = '_abc'
ret = re.match('[a-zA-Z0-9_]',text)
print(ret.group())
打印结果:_
3.3 使用[]
的形式代替\w
import re
text = '#abc'
ret = re.match('[^a-zA-Z0-9_]',text)
print(ret.group())
打印结果:#
注意:以下的*,+,?依赖与他之前的规则,例如:
\d+
表示匹配一个或者任意多个数字
3.4 *
可以匹配0或者任意多个字符
import re
text = '12345abc'
ret = re.match('\d*',text)
print(ret.group())
打印结果:12345
与+号的区别在与当字符串为空的时候,*号不报错,但是+号会报错。
3.5 +
匹配1个或者多个字符
import re
text = '12345abc'
ret = re.match('\d+',text)
print(ret.group())
打印结果:12345
3.6 匹配一个或者0个(要么没有,要么就只有一个)
import re
text = '12345abc'
ret = re.match('\w?',text)
print(ret.group())
打印结果:1
3.7 {m,n}
匹配m到n个字符
此语法根据字符串的长度尽可能多的匹配
import re
text = '12345abc'
ret = re.match('\w{1,5}',text)
print(ret.group())
打印结果:12345
4.实战案例
4.1 验证手机号
说明:此处假定手机号只有13,14,15,16,18等开头
import re
text = '18298377942'
ret = re.match('1[3,4,5,6,8]\d{9}',text)
print(ret.group())
打印结果:18298377942
4.2 验证邮箱
import re
text = 'qin_ys@qq.com'
ret = re.match('\w+@[a-zA-Z]+\.[a-zA-Z]+',text)
print(ret.group())
打印结果:qin_ys@qq.com
4.3 验证网址
import re
text = 'https://www.baidu.com'
ret = re.match('(http|https|ftp)://[\S]+',text)
print(ret.group())
4.4 验证身份证
import re
text = '53032219921008229x'
ret = re.match('\d{17}[\dxX]',text)
print(ret.group())
5.总结
作者:奔跑的金鱼
声明:书写博客不易,转载请注明出处,请支持原创,侵权将追究法律责任
个性签名:人的一切的痛苦,本质上都是对自己无能的愤怒
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!