1. python 的 re 模块
python 的 re 模块是专门处理正则表达式的内置模块。本模块提供了正则表达式匹配操作。
这里面我们学习两个 re 模块中常用的函数:re.findall() 和 re.sub()。格式如下:
函数
说明
re.findall(pattern, string, flags=0)
返回 pattern 在 string 中的所有非重叠匹配,以字符串列表或字符串元组列表的形式。
re.sub(pattern, repl, string, count=0, flags=0)
返回通过使用 repl 替换在 string 最左边非重叠出现的 pattern 而获得的字符串。 如果样式没有找到,则不加改变地返回 string。
总结
-
re.findall() 函数用来从字符串 string 提取符合格式 pattern 的内容,并返回。
-
re.sub() 函数是替换字符串 string 将符合格式 pattern 的内容,替换成 repl 并返回替换后的字符串。
示例
>>> import re
>>> html = '''<h1>咏鹅</h1>
... <p>鹅,鹅,鹅,曲项向天歌。</p>
... <p>白毛浮绿水,红掌拨清波。</p>'''
>>> re.findall("鹅", html)
['鹅', '鹅', '鹅', '鹅']
>>> re.findall("鹅,", html)
['鹅,', '鹅,', '鹅,']
>>> re.sub("鹅", '鸭', html)
'<h1>咏鸭</h1>\n<p>鸭,鸭,鸭,曲项向天歌。</p>\n<p>白毛浮绿水,红掌拨清波。</p>'
>>> r = re.sub("鹅", '鸭', html)
>>> print(r)
<h1>咏鸭</h1>
<p>鸭,鸭,鸭,曲项向天歌。</p>
<p>白毛浮绿水,红掌拨清波。</p>
可见:
re.findall("鹅", html) 是将所有含有 "鹅" 这一个字的内容都提取出来,形成列表 ['鹅', '鹅', '鹅', '鹅'] 并返回。
re.findall("鹅,", html) 是将所有含有 "鹅," 这一个字的内容都提取出来,形成列表 ['鹅,', '鹅,', '鹅,'] 并返回。
re.sub("鹅", '鸭', html) 是将 html 中所有的 "鹅" 都替换成了 "鸭" 并返回替换后的字符串。