Python正则表达式笔记 re模块常用函数和方法

有几个概念要先了解清楚。

函数:可以直接调用的实现特定功能的代码块。

方法:跟函数一样是实现特定功能的代码块,但是方法跟函数有一点区别,就是方法需要被对象调用,而函数可以直接调用。

正则表达式对象:当使用compile函数,返回的就是一个正则表达式对象。你也可以直接使用一个字符串来表示正则表达式,但最终字符串会被编译成正则表达式对象,而更有效的方法是使用compile函数对字符串进行预编译,有利于提升执行性能。

匹配对象:当成功调用match或search方法,就会返回匹配对象,匹配对象有两个主要方法group和groups。


匹配对象方法

group

group方法可以返回特定的子组,也可以方法整个匹配对象。

groups

这个方法返回包含全部子组的元组。

re模块函数和正则表达式对象方法

match

match试图从字符串起始开始对模式进行匹配,匹配成功就返回匹配对象,失败就返回None。

In [20]: r = re.match('foo', 'fooboo')

In [21]: print(r)
<_sre.SRE_Match object; span=(0, 3), match='foo'>

In [22]: r = re.match('foo', 'booboo')

In [23]: print(r)
None

search

如果匹配模式出现在字符串中间部分而不是起始部分,就要用search而不是match,search会对字符串进行搜索第一次跟模式匹配的部分,匹配成功就返回匹配对象,失败就返回None。

# 有两部分跟模式匹配,只搜索第一部分
In [26]: r = re.search('foo', 'seafooddfooc')

In [27]: r
Out[27]: <_sre.SRE_Match object; span=(3, 6), match='foo'>

In [28]: r.group()
Out[28]: 'foo'

findall

查询字符串中模式匹配到的所有出现情况,返回一个列表。

In [29]: re.findall('foo', 'dfooffoorbfoofooh')
Out[29]: ['foo', 'foo', 'foo', 'foo']

finditer

finditer是与findall类似但更节省内存的变体,这个函数返回的是一个迭代器。

In [39]: r = re.finditer('foo', 'dfooffoorbfoofooh')

In [40]: for i in r:
    ...:     print(i.group())
    ...:
foo
foo
foo
foo

sub

用于替换字符串中与模式匹配的部分。

In [43]: re.sub('/', '-', '2018/1/1')
Out[43]: '2018-1-1'

split

re.split是比普通字符串split方法更强大的分割字符串处理方式,可以通过定义正则表达式处理复杂的字符串分割。

In [55]: s = 'Mountain View, CA 94040'

In [56]: re.split(', | (?=\d{5}|[A-Z]{2})', s)
Out[56]: ['Mountain View', 'CA', '94040']

# 以上主要参考《Python核心编程》。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值