python正则表达式
- 概念:对字符串的一种逻辑公式,
- 使用规则从原字符串中提取想要的字符串
- 应用场景:表单验证,爬虫
字符
- 普通字符:字母,数字,汉字,下划线,语言符号,没有特殊定义的符号
- 在匹配中只匹配与自身相同的一个字符
- 元字符:
- . :匹配除了换行\n以外的任意一个字符
- [ ] :匹配字符集中的一个字符如[asfde]
- [^] :匹配字符集以外的字符如[^asdf]
- - :字符区间如0-9,a-z
- \ :转义字符
- ():对表达式进行分组,括号中的内容作为一个整体,并获取匹配的值
- |:逻辑或操作符
- 预定义匹配字符集
- \d: [0-9]
- \D:[^0-9]
- \w:[a-zA-Z0-9_]
- \W:[^a-zA-Z0-9_]
- \s:空格,制表符,换页符等空白字符
- \S:除空白字符以外的字符
- 正则字符.png
重复匹配
- 一个字符匹配多次,可以在匹配规则中将字符重复多次,也可以在要多次匹配的字符后使用{n}表示
- {n}:匹配n次
- {m,n}:m<=n,匹配的次数在m到n之间,包含m,n
- {m,}:匹配次数大于等于m次,
- {,n}:匹配次数小于等于n次
- ?:相当于{0,1}匹配0次或1次
- +:相当于{1,},至少匹配1次
- *:相当于{0,},不限匹配次数
位置匹配和非贪婪匹配
- 位置匹配
- ^:从字符串开始匹配
- $:在字符串结束的地方匹配
- \b:匹配单词边界,
- \B:匹配非单词边界
- 贪婪与非贪婪模式
- 在重复匹配时,正则默认总是尽可能多的匹配--贪婪匹配
- 非贪婪则是尽可能少的匹配
- (.*?):匹配 (.) 中的字符集组成的字符串0次或1次
re模块常用方法
-
re.complie(pattern[,flags])-->根据正则表达式的字符串创建模式对象,该对象可以调用匹配方法
-
re.search(pattern,string[,flags])-->在字符串中查找,从任意位置开始,返回查找到的对象
-
re.match(pattern,string[,flags])-->在字符串开始处匹配
-
re.findall(pattern,string[,flags])-->列出字符串模式中的所有匹配项
-
re.split(pattern,string[,maxsplit=0,flags])-->根据匹配模式分割字符串,返回分割后的字符串列表,maxsplit分割次数
-
re.sub(pat,repl,string[,count=0,flags])-->将字符串中所有的pat替换成repl,返回替换后的新字符串,count替换次数
-
flags参数:
- re.A ascii字符模式
- re.I 不区分大小写
- re.L 做本地化识别
- re.M 多行匹配
- re.S 使.能够匹配所有字符
- re.U Unicode字符集解析字符
- re.X
分组
-
使用()将匹配出来的字符进行二次筛选
-
.groups()返回二次筛选后组成的元组
-
.group()返回匹配到的所有字符串
-
.group(n)返回匹配到的字符串二次筛选后的第n个字符串
import re pat = 'a(.*?)a.*?f(.*?)g' # group()这是该规则匹配大的所有字符 # group(1)表示第一个(.*?)匹配到的字符组成的字符串 # groups()表示这两个(.*?)匹配到的字符串组成的元组
网友评论