正则表达式(Regular Expressions,简称regex或regexp)是一种强大的文本处理工具,它允许你定义搜索模式来匹配、查找和替换文本中的特定字符序列。在Python中,re模块提供了对正则表达式的支持,使得处理字符串变得更加灵活和高效。
一、正则表达式基础
正则表达式由一系列字符和特殊字符组成,用于定义搜索模式。以下是一些基本的正则表达式符号:
- .:匹配任意单个字符(除了换行符)。
- *:匹配前面的字符零次或多次。
- +:匹配前面的字符一次或多次。
- ?:匹配前面的字符零次或一次。
- {n}:匹配前面的字符恰好n次。
- {n,}:匹配前面的字符至少n次。
- {n,m}:匹配前面的字符至少n次,最多m次。
- []:定义一个字符集合,匹配集合中的任意字符。
- [^]:定义一个否定的字符集合,匹配不在集合中的任意字符。
- ():定义一个捕获组,用于提取匹配的子串。
- |:定义选择,匹配符号前或后的字符。
- ^:匹配字符串的开始。
- $:匹配字符串的结束。
- \w:匹配任何单词字符(字母、数字、下划线),等价于 [a-zA-Z0-9_]。
- \b :是一个特殊字符,它代表单词边界。
二、Python中的re模块
Python的re模块提供了正则表达式的功能。以下是一些常用的re模块函数:
- re.search(pattern, string, flags=0):在字符串中搜索第一个匹配正则表达式的子串。
- re.match(pattern, string, flags=0):从字符串的开始位置匹配正则表达式。
- re.findall(pattern, string, flags=0):返回所有匹配正则表达式的子串列表。
- re.sub(pattern, repl, string, count=0, flags=0):替换字符串中匹配正则表达式的子串。
- re.compile(pattern, flags=0):编译正则表达式模式,返回一个模式对象。
三、示例
让我们通过一些示例来了解re模块的用法。
1. 匹配特定模式
import re text ="Hello, my phone number is 123-456-7890."pattern =r'\d{3}-\d{3}-\d{4}' match= re.search(pattern, text)if match: print("Phone number found:",match.group())else: print("Phone number not found.")
2. 替换文本
text ="The rain in Spain falls mainly on the plain."pattern =r'\bS\w+'replacement ="C" new_text = re.sub(pattern, replacement, text)print(new_text)
3. 提取所有匹配项
text ="The rain in Spain falls mainly on the plain."pattern =r'\bS\w+' matches = re.findall(pattern, text)print(matches)
四、总结
正则表达式是处理文本的强大工具,而Python的re模块提供了丰富的功能来使用这些表达式。通过学习和实践,你可以利用正则表达式来解决各种文本处理问题,从简单的字符串匹配到复杂的文本解析和替换。