python正则表达式实例代码

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']

需要注意的是,本例中的正则表达式通过使用?实现了非贪婪匹配,即只匹配最短的可能。

后端开发标签