1. python正则表达式简介
正则表达式是一种文本处理工具,通过定义一些规则来匹配、查找和替换文本中的字符序列。Python标准库中的re模块是实现正则表达式操作的主要工具之一。
需要注意的是,正则表达式是一种强大而复杂的工具,需要充分理解其原理和语法规则,才能正确、高效地使用。
2. re模块基本操作
2.1 导入re模块
在使用re模块前,需要先导入它:
import re
2.2 匹配字符串
使用re模块中的match()方法可以匹配字符串:
import re
result = re.match('hello', 'hello,world!')
print(result.group())
输出结果为:
hello
需要注意的是,match()方法只会匹配字符串的开头,如果字符串开头不匹配,match()不会进行继续匹配。
2.3 搜索字符串
使用re模块中的search()方法可以搜索字符串:
import re
result = re.search('world', 'hello,world!')
print(result.group())
输出结果为:
world
需要注意的是,search()方法可以在整个字符串中搜索匹配项,不限于开头。
2.4 替换字符串
使用re模块中的sub()方法可以替换字符串中匹配的部分:
import re
str = 'hello,world!'
result = re.sub('world', 'python', str)
print(result)
输出结果为:
hello,python!
需要注意的是,sub()方法会返回一个新字符串,并不会修改原有字符串。
3. 常用正则表达式语法规则
3.1 匹配单个字符
使用.表示匹配一个任意字符,使用[]表示匹配方括号中的任意一个字符,使用\d表示匹配任意一个数字:
import re
pattern_1 = '.at'
pattern_2 = '[bh]at'
pattern_3 = '\d\d'
str = 'The cat in the hat sat on the flat mat.'
result_1 = re.findall(pattern_1, str)
result_2 = re.findall(pattern_2, str)
result_3 = re.findall(pattern_3, str)
print(result_1)
print(result_2)
print(result_3)
输出结果为:
['cat', 'hat', 'sat', 'lat', 'mat']
['bat', 'hat']
['18']
3.2 匹配多个字符
使用*表示匹配前面的字符重复出现任意次数,使用+表示匹配前面的字符重复出现至少一次,使用?表示匹配前面的字符重复出现零或一次:
import re
pattern_1 = 'sa*t'
pattern_2 = 'sa+t'
pattern_3 = 'sa?t'
str = 'The cat in the hat sat on the flat mat.'
result_1 = re.findall(pattern_1, str)
result_2 = re.findall(pattern_2, str)
result_3 = re.findall(pattern_3, str)
print(result_1)
print(result_2)
print(result_3)
输出结果为:
['sat', 'at', 'at']
['sat']
['st', 'at', 'at']
3.3 匹配字符串开头和结尾
使用^表示匹配字符串开头,使用$表示匹配字符串结尾:
import re
pattern_1 = '^The'
pattern_2 = 'mat.$'
str = 'The cat in the hat sat on the flat mat.'
result_1 = re.findall(pattern_1, str)
result_2 = re.findall(pattern_2, str)
print(result_1)
print(result_2)
输出结果为:
['The']
['mat.']
4. 实例代码
下面是一个使用正则表达式匹配网页中图片链接的示例代码:
import re
html = """
"""
result = re.findall(pattern, html)
print(result)
输出结果为:
['image1.jpg', 'image2.jpg', 'image3.png']
需要注意的是,本例中的正则表达式通过使用?实现了非贪婪匹配,即只匹配最短的可能。