坑的可以呀re

.findall()   直接匹配字母和数字

元字符:. ^ $ * + ? {} [] ()

import re
print(re.findall("alex","slfdlslalexgsj"))
>>>['alex']

.  表示代表两个任意字符

import re
print(re.findall("a..x","slfd123salexgsj"))
>>>['alex']
import re
print(re.findall("a..x","alexsdsadfxdlggsj"))
>>>['alex', 'adfx']

^  表示从开头开始匹配

import re
print(re.findall("^a..x","alexsdsdlggsj"))
>>>['alex']

$  匹配结尾的位置

import re
print(re.findall("a..x$","alexsdsadfxdafhx"))
>>>['afhx']
import re       #不能匹配$符
print(re.findall("a..x$","alexsdsadfxdafhx$"))
>>>[]

*  (0,+00)     匹配与前面的一个字符直到无穷次  没有的话匹配为“”      贪婪匹配

1 import re
2 print(re.findall("d*","aldddddddddfhx"))
3 >>>['', '', 'ddddddddd', '', '', '', '']
import re
print(re.findall("^d*","ddddddddhhshfhx"))
>>>['dddddddd']
print(re.findall("alex*","sodale"))
>>>['ale']

+(1,+00)     匹配与前面的一个字符直到无穷次  必须要有一个            贪婪匹配

import reprint(re.findall("alex+","sodalex"))
>>>['alex']
import re
print(re.findall("alex+","sodale"))
>>>[]

?(0,1)  最多匹配一个。

import re
print(re.findall("alex?","sfhalexxdj"))
print(re.findall("alex?","sfhaledj"))
>>>['alex']
>>>['ale']

{0,}==*

{1,}==+

{0,1}==?

{6}==只匹配6个

{1,6}==匹配1~6个

import re
print(re.findall("alex{0,3}","sfhalexxdj"))
print(re.findall("alex{3}","sfalexxledj"))
>>>['alexx']
>>>[]

?  变成惰性匹配  

1 import re
2 print(re.findall("alex*?","sfhalexxdj"))
3 print(re.findall("alex+?","sfalexxledj"))
4 >>>['ale']
5 >>>['alex']

[]   或的意思   括号里面 都 单独 拿出来匹配    括号内至少要有一个     [-]表示a~z   [^]表示非     []转意

1 import re
2 print(re.findall("www[oldboy baidu]","wwwbaidu"))
3 >>>['wwwb']
4 print(re.findall("q[a*z]","dfdfduqaa"))
5 >>>['qa']
6 print(re.findall("q[a-z]","dfdfqd13uq"))
7 >>>['qd']
8 print(re.findall("[^ads]","asda123123d"))
9 >>>['1', '2', '3', '1', '2', '3']

d  匹配任何十进制数;它相当于类 [0-9]。
D 匹配任何非数字字符;它相当于类 [^0-9]。
s  匹配任何空白字符;它相当于类 [ fv]。
S 匹配任何非空白字符;它相当于类 [^ fv]。
w 匹配任何字母数字字符;它相当于类 [a-zA-Z0-9_]。
W 匹配任何非字母数字字符;它相当于类 [^a-zA-Z0-9_]
  匹配一个特殊字符边界,比如空格 ,&,#等

  \ \\

 1 import re
 2 ret=re.findall('cl','abcle')
 3 print(ret)#[]
 4 ret=re.findall('c\l','abcle')
 5 print(ret)#[]
 6 ret=re.findall('c\\l','abcle')
 7 print(ret)#['c\l']
 8 ret=re.findall(r'c\l','abcle')
 9 print(ret)#['c\l']
10 #-----------------------------eg2:
11 #之所以选择是因为在ASCII表中是有意义的
12 m = re.findall('blow', 'blow')
13 print(m)
14 m = re.findall(r'blow', 'blow')
15 print(m

1 gan = "\"
2 print(gan)#  python解释器中字符串\,才表示一个
3 print(re.findall("\\",gan)) #['\'],其实就是一个

|   或的意思  左边或者右边

import re
print(re.findall(r'ka|b','sdjkalbsf'))
>>>['ka', 'b']

()  先匹配元字符

print(re.findall(r'(abc)+','abcabc'))
>>>['abc']

.search()     取第一组数据   分组之后要保留后面组的数据

1 import re
2 s = re.search('(?P<name>w+)(?P<name1>d+)j','ssf51sf515jjk')
3 print(s.group())
4 >>>ssf51sf515j
5 print(s.group("name"))
6 >>>ssf51sf51
7 print(s.group("name1"))
8 >>>5

.match()  匹配开始的位置

print(re.match("d+","454alexsd25d376d1df").group())
>>>454

.split()

1 print(re.split(" ","hello abc def"))
2 >>>['hello', 'abc', 'def']
3 print(re.split("[ |]","hello abc|def"))
4 >>>['hello', 'abc', 'def']
5 print(re.split("[ab]","asdabcd"))
6 >>>['', 'sd', '', 'cd']

.sub()  替换  可以写匹配次数

print(re.sub("d+","A","lshl655sg5s5g3"))
>>>lshlAAAsgAsAgA
print(re.sub("d+","A","lshl655sg5s5g3",2))
>>>lshlAsgAs5g3

.subn()   显示次数

print(re.subn("d+","A","lshl655sg5s5g3"))
>>>('lshlAsgAsAgA', 4)

.compile()    把功能换成变量

import re
com=re.compile("d+")
print(com.findall("ks23sd3gs5d"))
>>>['23', '3', '5']

.finditer()    变成可迭代 的对象

import re
ret=re.finditer("d","jjf561fg1515g")
print(next(ret).group())
print(next(ret).group())
>>>5
>>>6
原文地址:https://www.cnblogs.com/shizhengwen/p/6184420.html