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