正则表达式主要是进行模糊匹配
1、普通字符 完全匹配
2、元字符 ^ $ * + ? {} [] |
. 通配符 什么都可以代替数字、字母等等 出来换行符 代表任意一个字符例如:
1 import re 2 a = 'sddfsaljhhxsdlkjfeojfk' 3 b = re.findall('al...x',a) 4 print(b) 5 输出: 6 ['aljhhx']
^ 以什么开头 只能在字符串的开头开始匹配 例如:
1 import re 2 a = 'sddfsaljhhxsdlkjfeojfk' 3 b = re.findall('^s..f',a) 4 print(b) 5 输出: 6 ['sddf']
$ 以什么结尾 在字符串的结尾 例如:
1 import re 2 a = 'sddfsaljhhxsdlkjfeojfk' 3 b = re.findall('jfk$',a) 4 print(b) 5 输出: 6 ['jfk']
* 挨着的前面的重复0到无穷次 + 出现1到无穷次 例如:
1 import re 2 a = re.findall('alex*','akdkfjaleserdf') 3 print(a) 4 输出: 5 ['ale']
1 import re 2 a = re.findall('alex+','akdkfjalexxxxxxxxxxxserdf') 3 print(a) 4 输出: 5 ['alexxxxxxxxxxx']
1 import re 2 a = re.findall('alex+','akdkfjaleserdf') 3 print(a) 4 输出: 5 []
? 0个或者1个 例如:
1 import re 2 a = re.findall('alex?','akdkfjaleserdf') 3 print(a) 4 输出: 5 ['ale']
{ } {0,} ==* {1,}==+ {0,1} ==? {6} 重复6次 {1,6} 重复1到6中间的次数 例如:
1 import re 2 a = re.findall('alex{0,6}','akdkfjaleserdf') 3 print(a) 4 输出: 5 ['ale']
默认都是贪婪匹配,加上?变为非贪婪匹配匹配的越少越好 例如:
1 import re 2 a = re.findall('alex*?','akdkfjalexxxxserdf') 3 print(a) 4 输出: 5 ['ale']
1 import re 2 a = re.findall('alex+?','akdkfjalexxxxserdf') 3 print(a) 4 输出: 5 ['alex']
元字符之字符集 [ ] 字符集里面没有特殊字符
第一个功能或者的意思 例如:
1 import re 2 a = re.findall('a[abc]','ackljlkab ajjcjjajjcba ab') 3 print(a) 4 输出: 5 ['ac', 'ab', 'ab']
在字符集中的功能符号: - ^
- 表示范围 例如:
1 import re 2 a = re.findall('a[a-z]','au') 3 print(a) 4 输出: 5 ['au']
1 import re 2 a = re.findall('a[a-z]*','auasdfsdfs9') 3 print(a) 4 输出: 5 ['auasdfsdfs']
^ 取反 例如:
1 import re 2 a = re.findall('a[^a-z]','a6uasdfsdfs9') 3 print(a) 4 输出: 5 ['a6']
[^a-z] 表示非a-z 例如:
1 import re 2 a = re.findall('([^()]+)','12+(34*6+2-5*(2-1))') 3 print(a) 4 输出: 5 ['(2-1)']
让有意义的变为没有意义,没有意义的变为有意义的
读取文档 用S 去掉空格等 返回列表
1 import re 2 f = open('TEXT','r',encoding='utf-8') 3 f_read = f.read() 4 a = re.findall('S+',f_read) 5 print(a) 6 f.close() 7 输出: 8 ['NIHAO拉时间段佛阿萨德', '第三方年卡就是电话是的快乐风男', '奥德赛可发货呢', '大师傅nlas', '路上看到合法jes']
d 匹配任何十进制数;它相当于类[0-9]
D 匹配任何非数字字符;它相当于类[^0-9]
s 匹配任何空白字符;它相当于类[ fv]
S 匹配任何非空白字符;它相当于类[^ fv]
w 匹配任何字母数字字符;它相当于类[a-zA-Z0-9_]
W 匹配任何非字母数字字符;它相当于类[^a-zA-Z0-9_]
匹配一个特殊字符边界,比如空格,&,#等