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 = '[email protected]'
print(re.match(r3, s3))

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

你可能感兴趣的:(python,正则表达式,开发语言)