(一)正则表达式处理字符串主要有四大功能

  • 匹配 查看一个字符串是否符合正则表达式的语法,一般返回true或者false
  • 获取 正则表达式来提取字符串中符合要求的文本
  • 替换 查找字符串中符合正则表达式的文本,并用相应的字符串替换
  • 分割 使用正则表达式对字符串进行分割。

(二) Python中re模块使用正则表达式的两种方法

  • 使用re.compile(r, f)方法生成正则表达式对象,然后调用正则表达式对象的相应方法。这种做法的好处是生成正则对象之后可以多次使用。
  • re模块中对正则表达式对象的每个对象方法都有一个对应的模块方法,唯一不同的是传入的第一个参数是正则表达式字符串。此种方法适合于只使用一次的正则表达式。

(三)正则表达式对象的常用方法

  • rx.findall(s,start, end):
    返回一个列表,如果正则表达式中没有分组,则列表中包含的是所有匹配的内容,
    如果正则表达式中有分组,则列表中的每个元素是一个元组,元组中包含子分组中匹配到的内容,但是没有返回整个正则表达式匹配的内容

  • rx.finditer(s, start, end):
    返回一个可迭代对象
    对可迭代对象进行迭代,每一次返回一个匹配对象,可以调用匹配对象的group()方法查看指定组匹配到的内容,0表示整个正则表达式匹配到的内容

  • rx.search(s, start, end):
    返回一个匹配对象,倘若没匹配到,就返回None
    search方法只匹配一次就停止,不会继续往后匹配

  • rx.match(s, start, end):
    如果正则表达式在字符串的起始处匹配,就返回一个匹配对象,否则返回None

  • rx.sub(x, s, m):
    返回一个字符串。每一个匹配的地方用x进行替换,返回替换后的字符串,如果指定m,则最多替换m次。对于x可以使用/i或者/g<id>id可以是组名或者编号来引用捕获到的内容。
    模块方法re.sub(r, x, s, m)中的x可以使用一个函数。此时我们就可以对捕获到的内容推过这个函数进行处理后再替换匹配到的文本。

  • rx.subn(x, s, m):
    与re.sub()方法相同,区别在于返回的是二元组,其中一项是结果字符串,一项是做替换的个数。

  • rx.split(s, m):

    分割字符串,返回一个列表,用正则表达式匹配到的内容对字符串进行分割
    如果正则表达式中存在分组,则把分组匹配到的内容放在列表中每两个分割的中间作为列表的一部分