python正则表达式(regex)基础

标签: python  正则表达式

学习python时看到的正则表达式这个东西,感到一脸迷茫
查了一些资料后发现这并不是我的错0。0
这里写图片描述
正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。能按照某种模式区配一系列有相似有相似特征的字符串。

正则表达式特殊符号和字符等可直接百度得到
https://baike.baidu.com/item/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1700215

利用各种模式可以区配到想区配的字符串
例如:

正则表达式模式 区配到的字符串
the 任何包含the的字符串
\bthe 任何以the开始的字符串
\bthe\b 仅仅区配到单词the

python中通过re模块支持正则表达式
使用时调用import re

  • 使用compile()函数编译正则表达式
  • 区配对象
    group()返回整个区配对象
    groups()仅返回一个包含唯一或全部子组的元组

1.正则表达式对象方法:match()
match()函数从字符串起始部分对模式进行区配。若区配成功返回一个区配对象,否则返回None

>>>m = re.match('foo','foo') #模式区配字符串
>>>if m is not None:  #如果区配成功,就输出区配内容
        m.group()
'foo'
>>>m = re.match('foo','bar') #模式不能区配字符串
>>>if m is not None:
        m.group()

第二例区配失败,m被赋值为None

>>>re.match('foo','food on the table').group()
'foo'

march()无法从字符串中间区配,这是要用到search()

>>>m = re.match('foo','seafood') #区配失败
>>>if m is not None: m.group()
...
>>>m = re.search('foo','seafood')
>>>if m is not None: m.group()
'foo' #搜索成功

2.使用findall()查找每一次出现的位置
findall()总返回一个列表

>>>re.findall('car','carry the barcardi to the car')
['car','car','car']

3.使用sub()和subn()搜索与替换
subn()多返回一个替换总数

>>>re.sub('X','Mr.Smith','attn:X\n\nDear X, \n')
'attn:Mr.Smith\012\012Dear Mr.Smith, \012'

>>>re.subn('X','Mr.Smith','attn:X\n\nDear X, \n')
('attn:Mr.Smith\012\012Dear Mr.Smith, \012, 2')

资料来源:《python核心编程(第3版)》

原文链接:加载失败,请重新获取