欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

详解 Python 正则表达式

程序员文章站 2022-03-22 14:27:26
正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。re 模块使 Python 语言拥有全部的正则表达式功能。compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。re 模块也提供了与这些方法功能完全一致的函数,这些函数使用一个模式字符串做为它们的第一个参数。文章目录Re库的主要功能:常用 flags 标记:正则表达式模式匹配 特殊字符类re.match 函数re.search 函数re.match与...

正则表达式 是对字符串(a - z)& 特殊字符(称为“元字符”)操作的一种逻辑公式。
就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对 文本 or 字符串 的 一种过滤逻辑

正则表达式,又称规则表达式(Regular Expression ,简称 re )。正则表达式主要用于

  • 检查一个字符串是否含有某个子串;
  • 也可以从字符串中提取匹配的子串;
  • 或者对字符串中匹配的子串执行替换操作;

# Re库的主要功能:

函数 功能
re .compile() 根据一个模式字符串和可选的标志参数,生成一个正则表达式对象
re.search() 在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象
re.match() 在一个字符串的开始位置匹配正则表达式,返回match对象
re.findall() 搜索字符串,以列表的形式返回全部能匹配的子串
re.split() 将一个字符串按照正则表达式匹配的结果进行分割,返回列表类型
re.finditer() 搜索字符串,返回一个匹配的迭代类型,每个迭代元素是match对象
re.sub() 在一个字符串中替换所有匹配正则表达式的子串,返回替换后的字符串
  • group() 返回被 re 匹配的 子串内容
  • span() 返回一个元组包含 子串 ( start , end ) 的位置
  • start() 返回匹配开始的位置(子串第一个字符的索引)
  • end() 返回匹配结束的位置(子串最后一个字符的索引+1 )

1、compile()

compile() 根据一个模式字符串和可选的标志参数,生成一个正则表达式对象( Pattern ),供 match() 替换 和 search() 匹配 这两个函数使用。

# 函数语法:

re.compile( pattern [, flags] )

函数参数说明:

  • pattern:匹配的正则表达式;
  • flags:标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等;

2、re.match()

re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。

# 函数语法:

re.match(pattern, string, flags=0)

函数参数说明:

  • pattern:匹配的正则表达式;
  • string:要匹配的字符串;
  • flags:标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等;
  • return:匹配成功返回一个元组,包含所有匹配字符串的序号,序号从 1 开始,否则返回None
    span(n)方法:用于获取第 n+1 个组的匹配位置;
    group(n)方法:用于获取第 n+1 个组所匹配的子串内容;

3、re.search()

re.search 扫描整个字符串,并返回 第一个 匹配 pattern 的匹配对象。

# 函数语法:

re.search(pattern, string, flags=0)

函数参数说明:

  • pattern:匹配的正则表达式
  • string:要匹配的字符串。
  • flags:标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等;
  • return:匹配成功返回一个元组(第一处匹配 Pattern的匹配对象)包含所有匹配字符串的序号,序号从 1 开始,否则返回None。
    span(n)方法:用于获取第 n+1 个组的匹配位置;
    group(n)方法:用于获取第 n+1 个组所匹配的子串内容;

re.match与re.search的区别

re.match 必须从字符串开始处就匹配,如果字符串开始不符合正则表达式,则匹配失败,函数返回 None,
而 re.search 匹配整个字符串,直到找到一个匹配。


4、re.sub()

re.sub 替换字符串中的匹配项

# 函数语法:

re.sub(pattern, repl, string, count=0, flags=0)

函数参数说明:

  • pattern : 正则中的模式字符串。
  • repl : 替换的字符串,也可为一个函数。
  • string : 要被查找替换的原始字符串。
  • count : 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。
  • flags : 编译时用的匹配模式,数字形式。

前三个为必选参数,后两个为可选参数。


5、findall()

在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。

注意: match 和 search 是匹配一次 findall 匹配所有。

# 函数语法:

re.findall(pattern, string, flags=0)
	or
pattern.findall(string [, pos[, endpos]])

函数参数说明:

  • pattern 匹配模式。
  • string 待匹配的字符串。
  • pos 可选参数,指定字符串的起始位置,默认为 0。
  • endpos 可选参数,指定字符串的结束位置,默认为字符串的长度。

6、re.finditer()

和 findall 类似,在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。

# 函数语法:

re.finditer(pattern, string, flags=0)

函数参数说明:

  • pattern 匹配的正则表达式
  • string 要匹配的字符串。
  • flags 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。

7、re.split()

split 方法按照能够匹配的子串将字符串分割后返回列表,它的使用形式如下:

# 函数语法:

re.split(pattern, string[, maxsplit=0, flags=0])

函数参数说明:

  • pattern 匹配的正则表达式
  • string 要匹配的字符串。
  • maxsplit 分隔次数,maxsplit=1 分隔一次,默认为 0,不限制次数。
  • flags 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。

本文地址:https://blog.csdn.net/ViatorSun/article/details/108075213