Regex 模块概述
Regex 模块提供了全面的正则表达式操作功能,支持模式匹配、查找、捕获组提取、文本分割和替换等操作。所有函数都基于 regex-lite
库实现,提供高效的正则表达式处理能力。
功能概览
功能类别 | 主要函数 | 用途 |
---|---|---|
匹配定位 | find , find_all |
查找匹配位置和内容 |
匹配验证 | match |
验证整个文本是否匹配模式 |
捕获组操作 | capture , captures , capture_name |
提取捕获组内容 |
文本处理 | split , replace |
文本分割和替换 |
匹配定位函数
find <pattern> <text>
- 查找第一个匹配项
- 参数:
pattern
(必需):String|Regex
- 正则表达式模式text
(必需):String
- 要搜索的文本
- 返回:
Map|None
- 匹配信息映射,包含start
、end
、found
字段,未找到时返回 None - 示例:
Regex.find(r'\d+', "abc123def")
返回{start: 3, end: 6, found: "123"}
find_all <pattern> <text>
- 查找所有匹配项
- 参数:
pattern
(必需):String|Regex
- 正则表达式模式text
(必需):String
- 要搜索的文本
- 返回:
List[Map]
- 所有匹配项的列表,每个元素包含start
、end
、found
字段 - 示例:
Regex.find_all(r'\d+', "abc123def456")
返回匹配所有数字的列表
匹配验证函数
match <pattern> <text>
- 检查整个文本是否匹配模式
- 参数:
pattern
(必需):String|Regex
- 正则表达式模式text
(必需):String
- 要验证的文本
- 返回:
Boolean
- 整个文本匹配时返回 true - 示例:
Regex.match(r'^\d+$', "123")
返回true
捕获组操作函数
capture <pattern> <text>
- 获取第一个匹配的捕获组
- 参数:
pattern
(必需):String|Regex
- 包含捕获组的正则表达式text
(必需):String
- 要匹配的文本
- 返回:
List|None
- 捕获组列表,索引0为完整匹配,后续为各捕获组 - 示例:
Regex.capture(r'(\d{4})-(\d{2})-(\d{2})', "2023-12-25")
返回["2023-12-25", "2023", "12", "25"]
captures <pattern> <text>
- 获取所有匹配的捕获组
- 参数:
pattern
(必需):String|Regex
- 包含捕获组的正则表达式text
(必需):String
- 要匹配的文本
- 返回:
List[List]
- 所有匹配的捕获组列表 - 示例:多次匹配时返回每次匹配的捕获组
capture_name <pattern> <text>
- 获取命名捕获组
- 参数:
pattern
(必需):String|Regex
- 包含命名捕获组的正则表达式text
(必需):String
- 要匹配的文本
- 返回:
Map|None
- 命名捕获组的映射,键为组名,值为匹配内容 - 示例:
Regex.capture_name(r'(?P<year>\d{4})-(?P<month>\d{2})', "2023-12")
返回{year: "2023", month: "12"}
文本处理函数
split <pattern> <text>
- 按正则表达式分割文本
- 参数:
pattern
(必需):String|Regex
- 分割模式text
(必需):String
- 要分割的文本
- 返回:
List[String]
- 分割后的字符串列表 - 示例:
Regex.split(r'\s+', "hello world test")
返回["hello", "world", "test"]
replace <pattern> <replacement> <text>
- 替换所有匹配项
- 参数:
pattern
(必需):String|Regex
- 匹配模式replacement
(必需):String
- 替换内容text
(必需):String
- 目标文本
- 返回:
String
- 替换后的文本 - 示例:
Regex.replace(r'\d+', "X", "abc123def456")
返回"abcXdefX"
参数处理机制
Regex 模块的函数支持灵活的参数类型处理。支持处理不同的参数组合:
- 支持
Regex
类型和String
类型的模式参数 - 自动将字符串编译为正则表达式
- 提供详细的错误信息
使用示例
基础匹配操作
# 查找数字 |
捕获组操作
# 解析日期 |
文本处理
# 分割文本 |
管道操作示例
# 提取所有数字并求和 |
Notes
Regex 模块基于 regex-lite
库实现,提供了高效的正则表达式处理能力。所有函数都支持字符串和 Regex
类型的模式参数,自动处理类型转换。捕获组功能特别强大,支持位置捕获和命名捕获两种方式。参数类型说明中,<>
表示必需参数,[]
表示可选参数。
建议使用原始字符串(r'pattern'
)来避免转义字符的复杂性。
实际使用时,支持链式调用,如:
let rg = r'[,;]\s*' |
在示例中,为方便理解,仅使用了类型名称调用。