python-25-初识正则与re模块

戏子无情 提交于 2020-03-08 19:22:36

前言

什么是正则呢?既是我们可以定义一些规则,从而对字符串进行过滤。
python语言当中用re模块来操作正则,是匹配字符串的一种规则。

一、初识正则规则

1、字符类:

2、数量限定符:

3、位置限定符:

4、特殊符号

 5、其他普通字符集及其替换:

 

 二、python中操作re

python语言当中用re模块来操作正则,必须掌握方法:①findall ②search ③match

1、findall:返回所有满足匹配条件的结果,放在列表里

# 1、findall:返回所有满足匹配条件的结果,放在列表里
import re
ret = re.findall('[a-z|A-Z]+', 'Java Python C C# Go')
print(ret)

 2、search:只要找到符合规则的第一个就直接返回

  • ①需要调用group()才能拿到结果。
  • ②没有找到方方方None,调用group会报错
import re
ret = re.search('Q', 'Java Python C C# Go')
print(ret)                   # 拿到的是一个对象
print(ret.group())          # 这样写匹配不到字符,会报错

 一般是这样用解决会报错,if ret:

import re
ret = re.search('Q', 'Java Python C C# Go')
# print(ret)
if ret:
    print(ret.group())

3、match:从前往后找到第一个就返回

  • ①调用group才能拿到结果。
  • ②没有找到方方方None,调用group会报错。
import re
ret = re.match('Ja', 'Java Python C C# Go')
if ret:
    print(ret.group())

 4、split:切割字符串

import re
ret = re.split('[Ja]', 'Java Python C C# Go')
# 先按J分割,得到['', ava Python C C# Go],再按a分割,得到['', '', 'v', ' Python C C# Go']
print(ret)

 5、sub、subn:替换

import re
# 将字符串的数字替换成空字符,得到:ABCD
ret = re.sub('\d', '', 'A1B2C3D', 3)   # 参数3表示只替换3个
print(ret)
ret = re.subn('\d', '', 'A1B2C3D')     # 返回元组(替换的结果,替换了多少次)
print(ret)

 6、compile:将正则表达式编译成为一个对象,需写入匹配规则

# 6、compile:将正则表达式编译成为一个对象,需写入匹配规则
import re
comp = re.compile('gs(.+?)l')
ret = comp.findall('gs963lol')
print(ret)

 7、finditer:拿到的是一个迭代器,也需group才能拿到值

import re
ret = re.finditer('\d', 'asd46sad78asd6564')
print(ret)
print(next(ret).group())            # 查看第一个值
print(next(ret).group())            # 查看第二个值
print([i.group() for i in ret])    # 查看剩下所有值

 欢迎来大家QQ交流群一起学习:482713805

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!