一、re模块介绍
Python中的re模块是一个正则表达式工具包,用于处理字符串的匹配、替换、分割等操作。re模块提供了很多函数,可以方便地处理字符串,同时也提供了很多特殊字符和语法,用于模式匹配。
使用re模块之前,需要先导入模块:
import re
二、正则表达式的基本语法
正则表达式是由特殊字符和普通字符组成的字符串,可以用来匹配符合规则的文本。
以下是re模块中常用的特殊字符:
.
:匹配任意字符,除了换行符。^
:匹配字符串的开头。$
:匹配字符串的末尾。*
:匹配前面的字符出现0次或多次。+
:匹配前面的字符出现1次或多次。?
:匹配前面的字符出现0次或1次。{n}
:匹配前面的字符出现n次。{m,n}
:匹配前面的字符出现m到n次。[]
:匹配方括号中的任意一个字符。\
:转义字符。|
:匹配多个模式中的任意一个。()
:分组,可以将一组字符看做一个整体,与*、+、?、{}等搭配使用。
以下是一些常用的正则表达式:
- 匹配数字:
\d
- 匹配字母:
[a-zA-Z]
- 匹配空白字符:
\s
- 匹配非空白字符:
\S
- 匹配任意字符:
.
- 匹配邮箱:
\w+@\w+\.[a-zA-Z]{2,3}
- 匹配电话号码:
1[3456789]\d{9}
三、re模块中的常用函数
1. re.match(pattern, string)
尝试从字符串的起始位置匹配一个模式,如果匹配成功,返回一个匹配对象。如果匹配不成功,则返回None。
import re
s = "Hello, World!"
pattern = "Hello"
result = re.match(pattern, s)
if result:
print(result.group()) # 输出 "Hello"
else:
print("未匹配到任何内容")
2. re.search(pattern, string)
扫描整个字符串,查找与模式匹配的内容,如果匹配成功,返回一个匹配对象。如果匹配不成功,则返回None。
import re
s = "Hello, World!"
pattern = "World"
result = re.search(pattern, s)
if result:
print(result.group()) # 输出 "World"
else:
print("未匹配到任何内容")
3. re.findall(pattern, string)
搜索字符串,以列表形式返回全部匹配的内容。
import re
s = "Hello, World! Hello, Python! Hello, Java!"
pattern = "Hello"
results = re.findall(pattern, s)
print(results) # 输出 ["Hello", "Hello", "Hello"]
4. re.sub(pattern, repl, string)
替换字符串中的匹配项,并返回替换后的字符串。
import re
s = "Hello, World!"
pattern = "World"
replacement = "Python"
new_s = re.sub(pattern, replacement, s)
print(new_s) # 输出 "Hello, Python!"
四、实战应用
1. 替换字符串中的多个匹配项
可以使用sub函数实现的替换操作,例如替换句子中的所有元音字母为“*”:
import re
s = "Hello, World!"
pattern = "[aeiouAEIOU]"
replacement = "*"
new_s = re.sub(pattern, replacement, s)
print(new_s) # 输出 "H*ll*, W*rld!"
2. 匹配多个模式
可以使用“|”操作符匹配多个模式。例如匹配以“Hello”或“Hola”开头的句子:
import re
s = "Hello, World! Hola, Mundo!"
patterns = "Hello|Hola"
results = re.findall(patterns, s)
print(results) # 输出 ["Hello", "Hola"]
3. 匹配邮政编码
我们可以使用正则表达式匹配邮政编码,并按照指定的格式输出:
import re
postcode = "210012"
pattern = "(\d{3})(\d{3})"
replacement = r"\1-\2"
new_postcode = re.sub(pattern, replacement, postcode)
print(new_postcode) # 输出 "210-012"
五、总结
正则表达式是一种强大的文本处理工具,re模块提供了丰富的功能和语法,可以用于字符串的匹配、替换、分割等操作。熟练掌握正则表达式可以大大提高代码的处理效率。