正则表达式是一个乍一看简单但实际很复杂的东西。
它通常被用来检索、替换那些符合某个模式(规则)的文本。能按照某种模式区配一系列有相似有相似特征的字符串。
正则表达式特殊符号和字符等可直接百度得到(相当重要)
https://baike.baidu.com/item/正则表达式/1700215
常用:
\s | 匹配任何不可见字符,包括空格、制表符、换页符等 |
---|---|
\w | 匹配包括下划线的任何单词字符 |
( ) | 将( 和 ) 之间的表达式定义为“组”(group) |
| | 将两个匹配条件进行逻辑“或”(Or)运算 |
利用各种模式可以区配到想区配的字符串
例如:
正则表达式模式 | 区配到的字符串 |
---|---|
the | 任何包含the的字符串 |
\bthe | 任何以the开始的字符串 |
\bthe\b | 仅仅区配到单词the |
python中通过re模块支持正则表达式
使用时调用import re
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版)》