import re print(re.findall('e','he she looe')) #找'e',找到3个 print(re.search('e','he she love')) #找'e',找到第一个就返回,默认返回NOne print(re.search('e','he she love').group()) #显示,返回找到的e print(re.match('e','e she love')) #找是不是以’e‘开头,找到第一个就停止 print(re.match('e','e she love').group()) ['e', 'e', 'e'] <_sre.SRE_Match object; span=(1, 2), match='e'> e <_sre.SRE_Match object; span=(0, 1), match='e'> e
print(re.split('a','cdabv')) #按’a‘分割,等于a是分隔符
print(re.split('[ab]','cdanbv')) #先按a 分割得到cd nbv 再按b分割,得到cd n v
['cd', 'bv']
['cd', 'n', 'v']
print(re.sub('a','A','aa ha'))
print(re.sub('a','A','aa ha',1))
print(re.findall('a.*?b','b ab abb abbbb annbnnbbbbbbb')) #a.*?b===就是返回a,b之间最短的那个
print('===>',re.sub('^(w+)(.*?s)(w+)(.*?s)(w+)(.*?s)$',r'52325','wes@@@hehe@ww'))
1 2 3 4 5 6
a .*? b
@@@
AA hA
Aa ha
['ab', 'ab', 'ab', 'annb']
===> wes@@@hehe@ww
print(re.subn('a','A','aa ha',1)) #1,代表值替换一个
('Aa ha', 1) #表示替换了一个
obj=re.compile('d{2}') #等于自定义了一个pattern
print(obj.findall('abc123hhh')) #此obj 有re的所有方法
print(obj.search('af23df').group())
['12']
23
print(re.search('(d)+','123').group()) #group的作用是将所有组拼接到一起显示出来
print(re.findall('(d)+','123')) #findall结果是组内的结果,且是最后一个组的结果
123
['3']
#为何同样的表达式search与findall却有不同结果: print(re.search('( ([+-*/]*d+.?d*) + )',"1-12*(60+(-40.35/5)-(-4*3))").group()) #(-40.35/5)
#pattern:1.有括号,2 分组 3[+,-,*,/]*有多个运算符 d+ 多个数字 一个小数点或者没有 d* 多个数字或者没有 +多个分组等于最后要拼接
1.先找到一个括号
2.此括号内找到第一个分组(-40.35)
3.此括号内第二个分组(/5)
4.返回结果(-40.35/5)拼接两个分组
5结束,不再找下一个括号 print(re.findall('(([+-*/]*d+.?d*)+)',"1-12*(60+(-40.35/5)-(-4*3))")) #['/5', '*3']
1.先找到第一个括号(-40.35/5)的
2.此括号内第一个分组(-40.35)
3第二个(/5)
4.只返回第二个分组
5.在找到第二个括号(-4×3)的
6.此括号内第一个分组(-4)
7.此括号内第二个分组(×3)
8返回第二个分组(×3)
结束