Python re模块:如何使用re函数进行正则表达式匹配?(含例子)
Python中的re模块是正则表达式的实现。正则表达式是一种强大的文本匹配工具,可以在文本中搜索、查找、替换和分割匹配某种模式的字符串。在Python中使用re模块,可以熟练地使用正则表达式。
一、re模块的基本函数
1. re.match函数
该函数从开头开始匹配一个字符串,并只匹配一次。如果开头匹配不到,就会返回None。
例如:
import re text = 'hello world' matchObj = re.match(r'hello', text) print(matchObj)
输出结果是:
<_sre.SRE_Match object; span=(0, 5), match='hello'>
这里正则表达式r'hello',表示匹配字符串开头的“hello”字符串,可匹配成功。
2. re.search函数
该函数可以在整个字符串中查找 个匹配项,并只匹配一次。
例如:
import re text = 'hello world' searchObj = re.search(r'world', text) print(searchObj)
输出结果是:
<_sre.SRE_Match object; span=(6, 11), match='world'>
这里正则表达式r'world'匹配字符串中的“world”字符串,可以匹配成功。
3. re.findall函数
该函数在整个字符串中查找所有匹配项,并返回一个匹配项列表。如果没有匹配成功,就返回一个空列表。
例如:
import re text = 'hello world' findallObjs = re.findall(r'l', text) print(findallObjs)
输出结果是:
['l', 'l']
这里正则表达式r'l'匹配字符串中所有的“l”,可以匹配成功,返回一个匹配项列表。
4. re.sub函数
该函数可以将匹配到的所有包含在被查找字符串中的子串进行替换,并返回一个替换后的新字符串。
例如:
import re text = 'hello world' new_text = re.sub(r'world', 'Python', text) print(new_text)
输出结果是:
hello Python
这里正则表达式r'world'匹配字符串中的“world”字符串,把它替换成“Python”,可以替换成功,并返回一个替换后的新字符串。
二、正则表达式的语法元字符
正则表达式的语法元字符可以表示文本字符串中的各种字符、字符集合或者字符范围。一般包括以下几种:
1. 圆括号()
圆括号在正则表达式中有分组的作用,可以表示一个整体。
例如:
import re text = 'This is a cat and that is a cat.' findallObjs = re.findall(r'(cat)', text) print(findallObjs)
输出结果是:
['cat', 'cat']
这里正则表达式r'(cat)'匹配字符串中的“cat”字符串,并使用圆括号表示一个整体,可以匹配成功,并返回一个匹配项列表。
2. 点号.
点号可以匹配文本字符串中的任何单个字符,但不包括换行符(常用于匹配多种不知道的字符)。
例如:
import re text = 'This is a cat and that is a dog.' findallObjs = re.findall(r'.a.', text) print(findallObjs)
输出结果是:
['cat', 'dog']
这里正则表达式r'.a.'匹配字符串中的任何包含一个字符和字母a,以及另一个字符的子字符串,并可以匹配成功。
3. 星号*
星号在正则表达式中表示包含在星号前面的元素可能出现0次或更多次。
例如:
import re text = 'This is a caaaaaaaaat.' matchObj = re.match(r'ca*t', text) print(matchObj.group())
输出结果是:
caaaaaaaaat
这里正则表达式r'ca*t'匹配字符串中的“cat”字符串,并使用星号表示包含在*c之间的元素可能出现0次或更多次,可以匹配成功。
4. 加号+
加号在正则表达式中表示包含在加号前面的元素必须出现至少一次或多次。
例如:
import re text = 'This is a caaaaaaaaat.' matchObj = re.match(r'ca+t', text) print(matchObj.group())
输出结果是:
caaaaaaaaat
这里正则表达式r'ca+t'匹配字符串中的“cat”字符串,并使用加号表示包含在+c之间的元素必须出现至少一次或多次,可以匹配成功。
5. 问号?
问号在正则表达式中表示包含在问号前面的元素可以出现0次或1次。
例如:
import re text = 'This is a cat.' matchObj = re.match(r'ca?t', text) print(matchObj.group())
输出结果是:
cat
这里正则表达式r'ca?t'匹配字符串中的“cat”字符串,并使用问号表示包含在?t之间的元素可以出现0次或1次,可以匹配成功。
6. 中括号[]
中括号中可以包含多个字符集合,并且任意一个字符集合都可以匹配成功。例如[abc],表示匹配文本字符串中的a或b或c字符。
例如:
import re text = 'This is a cat and that is a dog.' matchObjs = re.findall(r'[cog]', text) print(matchObjs)
输出结果是:
['c', 'o', 'g', 'c', 'o']
这里正则表达式r'[cog]'匹配字符串中的字符集合c或o或g,并匹配到多个字符集合,可以匹配成功。
7. 转义字符\
反斜线后可以跟着各种字符或者字符集合,通常表示反斜线后面的字符是有特殊含义的。
例如:
import re text = 'This is a cat and that is a dog.' matchObjs1 = re.findall(r'a\.c', text) matchObjs2 = re.findall(r'a\\c', text) print(matchObjs1) print(matchObjs2)
输出结果是:
['a.c'] ['a\\c']
这里正则表达式r'a\.c'匹配字符串中的“a.c”字符串,表示字符.代表任何字符;r'a\\c'匹配字符串中的“a\c”字符串,表示字符\是转义字符。
三、结语
以上是re模块的基本函数和正则表达式的语法元字符,正则表达式的语法元字符便是进行正则表达式匹配的核心,可以想像为匹配模板,而re模块的函数则是模板化的作用,可以对正则表达式的结果进行匹配、查找、替换等处理。掌握正则表达式和re模块的使用,可以让Python开发者处理和分析数据更为轻松和高效。
