Python之正则表达式模块详解

在上一篇文章

Python之正则表达式基础语法

中我们简单的学习了正则表达式的一些基础语法,今天这篇文章将讲一下python如何使用正则表达式,它有那些方法。

正则表达式模块(re)内容

re模块是python的一个库,里面有很多方法可以对正则表达式进行运用。

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

有哪些值:

注:下面方法中的同名参数和上述介绍的参数意思一样,将不再过多的解释。

作用:从左到右扫描整个字符串 返回第一个与正则表达式匹配的对象,如果没有匹配成功就返回

比如: 查找 字符串中 CodeId 第一次出现的位置

注:返回的为匹配对象,其中是返回开始匹配的位置索引。由此我们可以猜到应该是返回匹配结束时的位置索引。

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

作用:查找字符串开头的零个或几个字符是否与正则表达式匹配,如果成功则返回相应的匹配对象,否则返回

比如:判断 python变量 的开头是否是数字。

注意:只会匹配字符串的开头,即使在(多行)模式下,也不会匹配每行的开头。

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

作用:如果整个字符串都与正则表达式匹配,则返回相应的匹配对象,否则返回

比如:判断输入的邮箱是否合法

注:是匹配对象的一个方法,作用是:返回匹配的所有子串。后面会进行详细介绍。

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

作用:以字符串中与正则表达式匹配的子串,为分隔符,对字符串进行分割。返回分割之后的列表。

比如:把英文句子分割为单词组成的列表

参数为最大分割次数,默认是表示无限分割。

注意:如果在正则表达式中使用组括号,则正则表达式中所有组的文本也会作为结果列表的一部分返回。

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

作用:从左到右对字符串进行扫描,以列表的形式返回所有与正则表达式匹配的子串。

比如:匹配一句话中所有的带小数点的数

注意:如果正则表达式中存在一个组,则返回组列表; 如果正则表达式中有多个组,这将是一个元组列表。

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

作用:从左到右对字符串进行扫描,以迭代器的形式返回所有与正则表达式匹配的子串。

比如:上面的例子 ,换成以迭代器的形式返回

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

作用:把字符串中与正则表达式匹配的子串替换为。可以是一个字符串也可以是一个函数。

是一个字符串时,可以处理任何转义字符

比如:

处理普通字符串

反向引用

注:除了上述的字符转义和反向引用外, 使用还可以引用那些使用语法定义的组。同时等价于,在替代方法中表达的更加清楚。后面会进行举例。

反向引用替换正则表达式中匹配的整个子串。

是一个函数时,这个函数的参数是一个单匹配对象,并返回一个替换的字符串。

比如:

参数用于控制最大替换次数。必须是一个非负整数。如果省略或为零,则所有匹配的都将被替换。比如:

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

作用:和一样,只是返回的是一个元组。元组里面的内容包括替换后的字符串,和替换的次数

比如:

re.escape(pattern)

作用:对字符串中的特殊字符加上转义,也就是在每个特殊字符前面加上

比如:

re.purge()

作用:清除正则表达式缓存。

re.compile(pattern,flags = 0)

作用:把一个正则表达式编译为正则表达式对象,它可用于匹配,以及其他方法。

比如:

注:正则表达式对象的匹配方法和上面介绍的模块级匹配方法 在得到效果上是一样的,但是效率上有所不同,是对正则表达式进行一次编译,然后保存便以后重用,适合那些单个程序中多次使用的正则表达式。

正则表达式对象的方法在参数上和上面的方法有些不同。比如:。

参数用于设置字符串在什么位置开始匹配。

参数用于设置字符串最长的匹配距离。

其他的所有方法和上面差不多 不在细讲,可以查看了解更多详细的内容。

匹配对象(Match)

匹配对象的布尔值始终返回。 由于和在没有匹配时返回,因此我们可以通过测试是否是匹配对象。比如:

Match.expand(template)

作用:把模板字符串中指定的位置 替换为 指定组的内容。中可以使用、或引用分组,但不能使用编号。与是等价的;如果你想表达之后是字符,只能使用,因为将被认为是第个分组。

比如:匹配日期

Match.group([ group1,… ] )

作用:返回匹配的一个或多个子组。其中如果有一个参数,结果是返回一个单一的字符串;如果有多个参数,则结果是返回每个参数对应的组内容 组成的 元组。没有参数,默认为(整个匹配结果被返回)。如果参数为零,则相应的返回值是整个匹配的字符串比如:

如果组编号为负数或大于正则表达式中定义的组数,则会引发异常。

如果正则表达式使用语法,则参数也可以是通过其组名称来访问组内容。

如果一个组匹配多次,只能访问最后一次匹配。

注:返回结果还可以通过数组的方式来访问,这得益于方法,它是在 版本中新加的。

Match.groups(default=None)

作用:从开始,返回一个包含匹配所有子组的元组。参数为那些没有匹配成功的子组设置默认值。没有参数时默认是.

比如:匹配浮点数

Match.groupdict(default=None)

作用:对于使用语法的所有子组,以字典的形式返回。默认参数用于那些没有匹配成功的子组; 它默认为

Match.start([group])和Match.end([group])

作用:返回按组匹配子串的开始和结束索引; 组默认为零(意味着整个匹配的子字符串)。如果组没有匹配成功则返回。

比如:

Match.span([group])

作用:返回一个由匹配子组的开始和结束组成的元组。如果分组没有成功匹配,返回(-1,-1)。

比如:

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180708G0W3C800?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券