正则表达式(Regular Expression,简称 regex 或 RE)是一种强大的文本处理工具,它使用一种特定的模式去匹配或处理字符串。Python 的 re 模块提供了对正则表达式的支持,使得开发者能够轻松地处理各种复杂的文本数据。下面我将用约1500字介绍 Python 的正则表达式,并辅以代码示例。
1. 正则表达式基础
正则表达式由普通字符(例如字母和数字)以及特殊字符(称为元字符)组成。元字符在正则表达式中具有特殊含义,能够表达模式的一部分。常见的元字符包括:
· .:匹配除换行符以外的任意字符。
· ^:匹配字符串的开始。
· $:匹配字符串的结束。
· *:匹配前面的子表达式零次或多次。
· +:匹配前面的子表达式一次或多次。
· ?:匹配前面的子表达式零次或一次。
· {n}:匹配前面的子表达式恰好 n 次。
· {n,}:匹配前面的子表达式至少 n 次。
· {n,m}:匹配前面的子表达式至少 n 次,但不超过 m 次。
· [...]:字符集,匹配方括号中的任意字符。
· [^...]:否定字符集,匹配不在方括号中的任意字符。
· |:逻辑或,匹配两个或多个表达式中的任意一个。
· \:转义字符,用于匹配特殊字符或指定特殊序列。
2. Python re 模块
Python 的 re 模块提供了正则表达式相关的函数和方法。以下是一些常用的函数和方法:
· re.match(pattern, string, flags=0):从字符串的起始位置匹配正则表达式,如果匹配成功则返回一个匹配对象,否则返回 None。
· re.search(pattern, string, flags=0):在字符串中搜索正则表达式,如果匹配成功则返回一个匹配对象,否则返回 None。
· re.findall(pattern, string, flags=0):在字符串中搜索所有正则表达式的匹配项,并返回一个列表。
· re.finditer(pattern, string, flags=0):在字符串中搜索所有正则表达式的匹配项,并返回一个迭代器,每个迭代器元素都是一个匹配对象。
· re.sub(pattern, repl, string, count=0, flags=0):在字符串中查找所有正则表达式的匹配项,并用指定的替换字符串替换它们。
· re.split(pattern, string, maxsplit=0, flags=0):根据正则表达式的匹配项分割字符串。
3. 代码示例
下面是一些使用 Python re 模块处理正则表达式的代码示例:
示例 1:匹配字符串的起始位置
python
|
import re |
|
|
|
pattern = "^Hello" |
|
string = "Hello, world!" |
|
match = re.match(pattern, string) |
|
if match: |
|
print("Match found:", match.group()) |
|
else: |
|
print("No match found.") |
示例 2:搜索字符串中的匹配项
python
|
import re |
|
|
|
pattern = "world" |
|
string = "Hello, world! This is a test." |
|
match = re.search(pattern, string) |
|
if match: |
|
print("Match found:", match.group()) |
|
else: |
|
print("No match found.") |
示例 3:查找所有匹配项
python
|
import re |
|
|
|
pattern = "\d+" # 匹配一个或多个数字 |
|
string = "There are 123 apples and 456 oranges." |
|
matches = re.findall(pattern, string) |
|
print("Matches found:", matches) # 输出: ['123', '456'] |
示例 4:替换匹配项
python
|
import re |
|
|
|
pattern = "\d+" |
|
repl = "XXX" |
|
string = "The price is 123 dollars." |
|
new_string = re.sub(pattern, repl, string) |
|
print("New string:", new_string) # 输出: The price is XXX dollars. |
示例 5:根据匹配项分割字符串
python
|
import re |
|
|
|
pattern = "\s+" # 匹配一个或多个空白字符 |
|
string = "apple banana cherry" |
|
split_list = re.split(pattern, string) |
|
print("Split list:", split_list) # 输出: ['apple', 'banana', 'cherry'] |
4. 总结
正则表达式是一种强大的文本处理工具,Python 的 re 模块为开发者提供了丰富的正则表达式功能。通过学习和掌握正则表达式的语法和 Python re 模块的使用方法,