在Python中,import re
用于导入 正则表达式模块 ,该模块是Python标准库的一部分,无需额外安装,可以直接使用。通过导入re
模块,你可以使用它提供的各种方法和属性来进行正则表达式的匹配、搜索、替换等操作。
以下是re
模块的一些核心概念和常用方法:
- 模式匹配 :
-
re.search(pattern, text)
: 在字符串text
中搜索第一个与模式pattern
匹配的子串。 -
re.match(pattern, text)
: 从字符串text
的开头开始匹配模式pattern
。 -
re.findall(pattern, text)
: 在字符串text
中查找所有与模式pattern
匹配的子串,并返回一个列表。 -
re.sub(pattern, replacement, text)
: 将字符串text
中所有与模式pattern
匹配的子串替换为replacement
。
- 编译正则表达式 :
-
re.compile(pattern, flags=0)
: 将正则表达式模式字符串pattern
编译为一个正则表达式对象,可以多次使用,提高匹配效率。
- 获取匹配信息 :
-
match.group()
: 返回整个匹配的子串。 -
match.span()
: 返回匹配子串的起始和结束位置。
- 正则表达式语法 :
-
元字符:
^
(字符串开头),$
(字符串结尾),.
(任意字符,除了换行符),[]
(字符集),[^...]
(非字符集),*
(匹配0个或多个),+
(匹配1个或多个),?
(非贪婪模式),{n}
(精确匹配n个),{n,}
(至少匹配n个),{n,m}
(至少匹配n个,至多匹配m个)。 -
标志:
re.I
(忽略大小写),re.S
(使.
匹配包括换行符在内的任意字符),re.X
(详细模式,允许模式字符串分行和注释)。
示例
import re
# 最基础的匹配
text = "Python3.9 is awesome"
pattern = r"Python\d\.\d"
result = re.search(pattern, text)
print(result.group()) # 输出: Python3.9
# 使用编译后的正则表达式提升性能
pattern = re.compile(r"\d+")
numbers = pattern.findall("I have 2 apples and 3 oranges")
print(numbers) # 输出: ['2', '3']
# 进阶技巧:命名捕获组
log = "2024-12-23 10:30:15 ERROR: Connection timeout"
pattern = r"(?P<date>\d{4}-\d{2}-\d{2}) (?P<time>\d{2}:\d{2}:\d{2}) (?P<message>.+)"
match = re.match(pattern, log)
if match:
print(f"日期: {match.group('date')}")
print(f"时间: {match.group('time')}")
print(f"消息: {match.group('message')}")
通过这些方法,你可以灵活地使用正则表达式来处理字符串数据。建议在实际应用中,先编译正则表达式模式以提高性能,并充分利用命名捕获组来提取匹配的子串信息。