目录



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.总结

【Python3 爬虫】U15_正则表达式_字符串


作者:奔跑的金鱼