https://www.bilibili.com/video/BV1C4411J7s5?from=search&seid=3616167171491354049
1,match进行匹配
import re
#match方法进行匹配,从头开始匹配,match这个函数如果匹配成功,返回的就是一个对象,如果匹配不到数据,返回的就是NONE
result=re.match('baidu','baidu.com')#前面是规则,后面是应用规则的字符串
print(result)
#group这个方法用来提取匹配到的数据
print(result.group())
注意点:
1,match从头开始匹配
2,字符
2.1,单个任意字符
result=re.match('.','bcd')#点代表通配符
print(result.group())
#b
2.2,[]匹配列举字符的任何一位
result=re.match('[ppoiu]','python')#中括号匹配当前列举的任何一个字符
print(result.group())
#p
2,.3,\d匹配数字
re1=re.match('\d','923python')
#9
#re1=re.match('[0123456789]','923python')
#re1=re.match('[0-9]','923python')
re1=re.match('\d\d\d','923python')
#923
re1=re.match('\d*','923python')#星*号代表0个或多个
#923
re1=re.match('\d+','923python')#加+号代表1个或者多个
#923
print(re1.group())
2.4,\d匹配的是非数字
re1=re.match('\D','@923python')#D匹配数字之外的任意字符
print(re1.group())
2.5,\w匹配的是a-z A-Z 0-9
re1=re.match('\w',)
print(re1.group())
3,练习
import re
import re
#todo,match方法进行匹配,从头开始匹配,match这个函数如果匹配成功,返回的就是一个对象,如果匹配不到数据,返回的就是NONE
result=re.match('baidu','baidu.com')#前面是规则,后面是应用规则的字符串
print(result)
result=re.match('.','bcd')#b
print(result.group())
result=re.match('[p]','python')#中括号匹配当前列举的任何一个字符
print(result.group())
re1=re.match('\d','923python')
#re1=re.match('[0123456789]','923python')
#re1=re.match('[0-9]','923python')
print(re1.group())
re2=re.match('\d*','923python')
print(re2.group())
re3=re.match('\D*','@!@!@#23python@')
print(re3.group())
# todo,匹配字符串,要求第一个字母必须是大小写字符后面的小写字母,并且字母可有可无
re4=re.match('[A-Za-z][a-z]*\d*','Yaojuan123')
print(re4.group())
#todo,匹配0-99之间的数字
re5=re.match('[1-9]?[0-9]','3425')
print(re5.group())
#todo,匹配8-20位的密码,可以是数字字母下划线
re6=re.match('[\w*]{8,20}','fa_wsse14')#花括号匹配8-20次
re7=re.match('[\w*]{8,}','fawe14')#至少出现多少次
re8=re.match('[\w*]{8}','fawe14')#出现多少次
print(re6.group())
#todo,匹配126邮箱,@符号前面有4,20个位
re9=re.match('[\w]{4,20}@126.com$','lajdge68ew7_@126.com')#¥以。。。结尾
print(re9.group())
#todo,匹配0-100之间的数字
rel=re.match('[1-9]?[0-9]|100','101')
print(rel.group())
#todo,匹配出163,126,qq邮箱的域名
rel1=re.findall('[\w]{4,20}@(163|126|qq).com','ljh76@163.com@126.com@qq.com')
print(rel1)
4, 正则表达式匹配规则
符号 | 说明 |
---|---|
. | 用于匹配任意一个字符,如 a.c 可以匹配 abc 、aac 、akc 等 |
^ | 用于匹配以…开头的字符,如 ^abc 可以匹配 abcde 、abcc 、abcak 等 |
$ | 用于匹配以…结尾的字符,如 abc$ 可以匹配 xxxabc 、123abc 等 |
* | 匹配前一个字符零次或多次,如 abc* 可以匹配 ab 、abc 、abcccc 等 |
+ | 匹配前一个字符一次或多次,如 abc+ 可以匹配 abc 、abcc 、abcccc 等 |
? | 匹配前一个字符零次或一次,如 abc? 只能匹配到 ab 和 abc |
\ | 转义字符,比如我想匹配 a.c ,应该写成 a.c ,否则 . 会被当成匹配字符 |
| | 表示左右表达式任意匹配一个,如 aaa|bbb 可以匹配 aaa 也可以匹配 bbb |
[ ] | 匹配中括号中的任意一个字符,如 a[bc]d 可以匹配 abd 和 acd,也可以写一个范围,如 [0-9] 、[a-z] 等 |
( ) | 被括起来的表达式将作为一个分组,如 (abc){2} 可以匹配 abcabc ,a(123|456)b 可以匹配 a123b 或 a456b |
{m} | 表示匹配前一个字符m次,如 ab{2}c 可以匹配 abbc |
{m,n} | 表示匹配前一个字符 m 至 n 次,如 ab{1,2}c 可以匹配 abc 或 abbc |
\d | 匹配数字,如 a\dc 可以匹配 a1c 、a2c 、a3c 等 |
\D | 匹配非数字,也就是除了数字之外的任意字符或符号,如 a\Dc 可以匹配 abc 、aac 、a.c 等 |
\s | 匹配空白字符,也就是匹配空格、换行符、制表符等等,如 a\sc 可以匹配 ‘a c’ 、a\nc 、a\tc 等 |
\S | 匹配非空白字符,也就是匹配空格、换行符、制表符等之外的其他任意字符或符号,如 a\Sc 表示除了 ‘a c’ 之外都能匹配,abc 、a3c 、a.c 等 |
\w | 匹配大小写字母和数字,也就是匹配 [a-zA-Z0-9] 中的字符,如 a\wc 可以匹配 abc 、aBc 、a2c 等 |
\W | 匹配非大小写字母和数字,也就是匹配大小写字母和数字之外的其他任意字符或符号,如 a\Wc 可以匹配 a.c 、a#c 、a+c 等 |