爬虫部分--正则表达式文本笔记

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 等
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值