. 匹配任何字符,除了\n,占位符 * 匹配前一个字符0次或无限次 + 匹配前一个字符1次或无限次 ? 匹配前一个字符0次或1次 .* 贪心算法 .*? 非贪心算法 () 括号内的数据作为结果返回 (\d+) 匹配纯数字 [] 对单个字符给出取值范围, [abc]:a.b.c [a-z]:a到z字符 [^] 对单个字符排除范围, [^abc]:非a或b或c | 或, abc|def:abc或def {m} 扩展前一个字符m次, ab{2}c:abbc ^ 匹配字符串开头 $ 匹配字符串结尾 \d 数字,等价于[0-9]
2.正则表达式常用方法
findall:匹配符合规则的内容,返回结果的列表 search: 匹配并提取第一个符合规则的内容,返回一个正则表达式对象(object) .group(2) 取第二个 匹配一个内容时,用search,提高效率 sub: 替换符合规律的内容,返回替换后的值 re.sub("xx(.*?)xx","替换为该内容", 原字符串)
3.列子
a = "xuufhxxixxaasfasxxlovexxasdasdaxxyouxxasdasa" print(re.findall("xx.*xx", a)) >>>['xxixxaasfasxxlovexxasdasdaxxyouxx'] print(re.findall("xx.*?xx", a)) >>>['xxixx', 'xxlovexx', 'xxyouxx'] print(re.findall("xx(.*?)xx", a)) >>>['i', 'love', 'you']
- re.S的使用
a = """xuufhxxixxaasfasxx lovexxasdasdaxxyouxxasdasa""" print(re.findall("xx(.*?)xx", a, re.S)) >>>['i', 'love', 'you'] 作用:使‘.’号匹配换行符(\n) 扩展: re.I 忽略大小写 re.M ^字符能将每行当作字符串匹配开始
5.当表达式有特殊符号时,用r转义
r('正则表达式')
6.正则表达式的两种使用方法
# 一次操作 a = re.search(r'xxx', str) # 正则表达式需要多次使用 b = re.compile(r'xxx') a = b.search(str)