python正则表达式

元字符匹配,对于爬虫十分重要


字符功能
.匹配任意一个字符(除了 \n ), \. 匹配点本身
[ ]匹配 [ ] 中列举的字符
\d匹配数字,即 0-9
\D匹配非数字
\s匹配空白,即 空格、tab键
\S匹配非空白
\w匹配单词字符,即 a-z、A-Z、0-9、_
\W匹配非单词字符

r的用法

字符串前面带上r,表示其中转义字符无效,均视为普通字符

三大方法

import re包
re.match, 从头开始匹配,匹配第一个命中项,如果第一个匹配失败,直接结束
re.search,全局匹配,匹配第一个命中项
re.findall,全局匹配,匹配全部命中项,返回一个 list

数量匹配

*匹配前一个规则的字符出现0至无数次,闭包
+匹配前一个规则的字符出现1至无数次, 正闭包
匹配钱一个规则的字符出现0次或者1次
{m}匹配前一个规则的字符串出现m次
{m,}匹配前一个规则的字符串出现最少m次
{m,n}匹配前一个规则的字符串出现m到n次

边界匹配

^匹配字符串开头
$匹配字符串结尾
\b匹配一个单词的边界
\B匹配非单词的边界

分组匹配

|匹配左右任意一个表达式 或
( )将括号中字符作为一个分组

案列演示

"""
正则表达式元字符匹配
"""

import re

# 匹配账号,只能由数字和字母组成,长度限制6到10位,正则表达式里面不要乱写空格
r1 = '^[0-9a-zA-Z]{6,10}$'
s1 = '123458Ab'
print(re.findall(r1, s1))

# 匹配QQ号,纯数字,长度5-11,第一位不为0
r2 = '^[1-9][0-9]{4,10}$'
s2 = '01246789'
print(re.findall(r2, s2))

# 匹配邮箱地址,允许 qq、163、gmail
r3 = r'(^[\w-]+(\.[\w-]+)*@(qq|163|gmail)(\.[\w-]+)+$)'
s3 = 'a.b.c.d.f.g@163.com.za.as'
print(re.match(r3, s3))

输出结果自己在IDE跑一下,很简单。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值