re正则表达式

正则表达式主要是进行模糊匹配

1、普通字符       完全匹配

2、元字符    ^   $  *  +  ?  {}  []  |  \

.    通配符    什么都可以代替数字、字母等等   出来换行符\n     代表任意一个字符例如:

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   匹配任何空白字符;它相当于类[\t\n\r\f\v]

\S  匹配任何非空白字符;它相当于类[^\t\n\r\f\v]

\w   匹配任何字母数字字符;它相当于类[a-zA-Z0-9_]

\W   匹配任何非字母数字字符;它相当于类[^a-zA-Z0-9_]

\b    匹配一个特殊字符边界,比如空格,&,#等

posted @ 2020-03-03 22:42  竹石2020  阅读(259)  评论(0编辑  收藏  举报