学习python的第二十三天(re模块)

6.13自我总结

1.re模块

1.re.findall()

1.基本用法

re.findall(正则匹配的格式,匹配的对象)

2.正则匹配常用格式

1.^只匹配开头在多行模式中匹配每一行的开头

类似字符串内置方法里面的startswith

import re
s = '''aaaa,123213123,____,杨aaaaa'''
print(re.findall('^aaaa',s))
#['aaaa']

2.a|b匹配的格式a或者b

import re
s = '''aaaa,123213123,____,杨aaaaa'''
print(re.findall('123|aaaaa',s))
#['123', '123', 'aaaaa']

3.[a,b]匹配的格式a或者b如果ab为多个值他会把里面的东西打散

import re
s = '''aaaa,123213123,____,杨aaaaa'''
print(re.findall('[123,aaaaa]',s))
#['a', 'a', 'a', 'a', ',', '1', '2', '3', '2', '1', '3', '1', '2', '3', ',', ',', 'a', 'a', 'a', 'a', 'a']

4.a$匹配已a 结尾的

类似字符串内置方法里面的endswith

import re
s = '''aaaa,123213123,____,杨aaaaa'''
print(re.findall('杨$',s))
#[]
print(re.findall('杨aaaaa$',s))

5..代表任意字符

import re
s = '''aaaa,123213123,____,杨aaaaa'''
print(re.findall('杨...',s))
#   ['杨aaa']

6.{n}代表大括号前字符n个

import re
s = '''aaaa,123213123,____,杨aaaaa'''
print(re.findall('a{5}',s)) #等效于'aaaaa'
#['aaaaa']

7.*代表前面字符0-无穷大个

import re
s = '''aaaa,123213123,____,杨aaaaa'''
print(re.findall('a*',s))  #取到一个a后他不会停止会接着往后找,a为0个他也取
['aaaa', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'aaaaa', '']

8.+代表前面字符1-无穷大个

import re
s = '''aaaa,123213123,____,杨aaaaa'''
print(re.findall('a+',s))  #取到一个a后他不会停止会接着往后找   
['aaaa', 'aaaaa']

9.a?代表a字符0-1个

import re
s = '''aaaa,123213123,____,杨aaaaa'''
print(re.findall('aaa',s))
print(re.findall('aaa?',s))
['aaa', 'aaa']
['aaa', 'aaa', 'aa']

10.\模式

一个\接某个类型代表一个字符

  • \d匹配数组
  • \D除了数字都匹配到了
  • \s,空
  • \S,非空
  • \w,字母,数字,下划线
  • \W,非字母,数字,下划线

11.?a,前面值是+或者*的时候?匹配内容a结束

import re
s = '''aaaa,123213123,____,杨aaaaa'''
print(re.findall('aa+?a',s))
['aaa', 'aaa']

12.(),括号里面什么到时候取什么

3.re.findall(正则匹配的格式,匹配的对象,re.S)

re.S的作用:

不使用re.S时,则只在每一行内进行匹配,如果存在一行没有,就换下一行重新开始,使用re.S参数以后,正则表达式会将这个字符串看做整体,在整体中进行匹配

import re
a = """sdhellolsdlfsdfiooe:
yy988989pythonafsf"""
b = re.findall('hello(.*?)python',a)
c = re.findall('hello(.*?)python',a,re.S)
print (b)
print(c)
输出结果:
b:[]
c:['lsdlfsdfiooe:\nyy988989']

2.re.match和re.search

# match 和 search的区别,mathch从开头开始匹配找一个,search搜索所有找第一个

3.re.compile

定义某种搜索格式
res1 = re.compile('\d+')
res1.findall(查找对象)等同于re.findall('\d+',查找对象)

4.re.split()

就是字符串的split方法,区别是可以使用正则表达式去替换

5.re.sub和re.subu

就是字符串的replace方法,区别是可以使用正则表达式去替换

import re
s = '猪八戒的媳妇是1高翠兰,孙悟空的媳妇是2白骨精,唐僧的媳妇是3女儿国王,沙悟净6没有媳妇(py9的学生们)'
print(re.sub('\d','',s))
print(re.subn('\d','',s))  # 除了会修改内容,还会返回修改了多少次
猪八戒的媳妇是高翠兰,孙悟空的媳妇是白骨精,唐僧的媳妇是女儿国王,沙悟净没有媳妇(py的学生们)
('猪八戒的媳妇是高翠兰,孙悟空的媳妇是白骨精,唐僧的媳妇是女儿国王,沙悟净没有媳妇(py的学生们)', 5)

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!