Python中的正则表达式及其常用匹配函数用法简介

1.正则表达式简介

正则表达式(Regular Expression)是一种表达文本模式的方法,可以用来匹配、查找、替换文本中的字符串。在Python中,我们可以使用re模块来进行正则表达式操作。

2.常用正则表达式元字符

2.1 字符集:

方括号表示字符集,其中可以列出字符的集合,表示匹配其中的任意一个字符。比如,字符集[abc]可以匹配字符串中的字符'a'、'b'、'c'。

import re

str_1 = 'abcde'

pattern = '[abc]'

res = re.findall(pattern, str_1)

print(res) # 输出['a', 'b', 'c']

2.2 元字符'.'

元字符“.”可以匹配除了换行符号以外的任意一个字符。如果要匹配包括换行符号的所有字符,可以使用“[\s\S]”。

import re

str_2 = 'abc\ndef'

pattern = '.+'

res = re.findall(pattern, str_2)

print(res) # 输出['abc', 'def']

2.3 元字符'^'和'$'

元字符“^”表示匹配字符串的开头,而“$”则表示匹配字符串的结尾。

import re

str_3 = 'abcde'

pattern = '^a.*e$'

res = re.findall(pattern, str_3)

print(res) # 输出['abcde']

2.4 元字符'*'、'+'和'?'

元字符“*”表示匹配前面的字符零次或多次,元字符“+”表示匹配前面的字符一次或多次,而元字符“?”表示匹配前面的字符零次或一次。

import re

str_4 = 'oooxoooooo'

pattern_1 = 'o*'

res_1 = re.findall(pattern_1, str_4) # 匹配任意数量的"o"

pattern_2 = 'o+'

res_2 = re.findall(pattern_2, str_4) # 匹配至少一个"o"

pattern_3 = 'x?o+'

res_3 = re.findall(pattern_3, str_4) # 匹配"o"或"x"后面至少一个"o"

print(res_1) # 输出['', '', '', 'ooo', '', '', '', 'oooooo', '']

print(res_2) # 输出['ooo', 'oooooo']

print(res_3) # 输出['oxoooooo']

2.5 元字符'\d'、'\D'、'\w'和'\W'

元字符“\d”表示任意一个数字,而元字符“\D”则表示任意一个非数字字符。元字符“\w”表示任意一个数字或字母字符,而元字符“\W”则表示任意一个非数字或非字母字符。

import re

str_5 = 'a1b2c3.d4e5f6'

pattern_1 = '\d'

res_1 = re.findall(pattern_1, str_5) # 匹配任意一个数字字符

pattern_2 = '\D'

res_2 = re.findall(pattern_2, str_5) # 匹配任意一个非数字字符

pattern_3 = '\w'

res_3 = re.findall(pattern_3, str_5) # 匹配任意一个数字或字母字符

pattern_4 = '\W'

res_4 = re.findall(pattern_4, str_5) # 匹配任意一个非数字或非字母字符

print(res_1) # 输出['1', '2', '3', '4', '5', '6']

print(res_2) # 输出['a', 'b', 'c', '.', 'd', 'e', 'f']

print(res_3) # 输出['a', '1', 'b', '2', 'c', '3', 'd', '4', 'e', '5', 'f', '6']

print(res_4) # 输出[]

3.常用匹配函数

3.1 re.findall()

re.findall()可以返回多个不重叠的匹配,并将其保存在一个列表中。

import re

str_6 = 'python is a good language. python is easy to learn.'

pattern = 'python'

res = re.findall(pattern, str_6)

print(res) # 输出['python', 'python']

3.2 re.search()

re.search()返回第一个匹配的对象,如果没有匹配的内容,则返回None。

import re

str_7 = 'python is a good language. python is easy to learn.'

pattern = 'language'

res = re.search(pattern, str_7)

print(res) # 输出

3.3 re.match()

re.match()从字符串的开头开始匹配,如果没有匹配的内容,则返回None。

import re

str_8 = 'python is a good language. python is easy to learn.'

pattern = 'python'

res = re.match(pattern, str_8)

print(res) # 输出

3.4 re.split()

re.split()可以将字符串按照指定的分隔符分割,并返回一个列表。

import re

str_9 = 'a,b,c,d,e,f'

pattern = ','

res = re.split(pattern, str_9)

print(res) # 输出['a', 'b', 'c', 'd', 'e', 'f']

3.5 re.sub()

re.sub()可以在字符串中查找并用指定的字符串替换掉匹配的内容。

import re

str_10 = 'pyhon is a good language. python is easy to learn.'

pattern = 'pyhon'

replace_str = 'python'

res = re.sub(pattern, replace_str, str_10)

print(res) # 输出'python is a good language. python is easy to learn.'

4.总结

本文简要介绍了Python中正则表达式和常用匹配函数的用法,并给出了一些具体的代码示例。虽然正则表达式在一开始可能会感觉比较难懂,但是在进一步了解之后,我们可以使用正则表达式匹配出自己想要的内容,这在数据处理、爬虫等方面都有着广泛的应用。

后端开发标签