# Python 正则测试器（re 模块）

在线测试 Python re 模块正则：(?P…) 命名组、(?P=name) 反向引用、VERBOSE 模式、findall 行为与 \\g 替换模板——附可直接粘贴的 Python 代码。

> 标准页面: https://elysiatools.com/zh/tools/python-regex-tester

- **分类:** Development

- **关键词:** python 正则测试, re 模块 在线, 正则表达式, findall, 命名分组

## 概述

面向 Python 内置 re 模块 的正则测试器。按 Python 写法输入——命名组 (?P…)、命名反向引用 (?P=tag)、带 # 注释的 VERBOSE 自由排版、re.IGNORECASE / MULTILINE / DOTALL 标志——先转译到平台的 ECMAScript 引擎再对测试串执行。可得到每个匹配（g 开关模拟 findall/finditer）、带名字的捕获组表格，以及把 \\1、\\g<1>、\\g 模板转译后的 re.sub 式替换预览，并生成带正确 re.\* 标志与 match.group(\\u0027name\\u0027) 访问的 Python 代码。Python 特有语义得到尊重：\\d \\w \\s 对 str 默认 Unicode（取消勾选可仿真 re.ASCII）；占有优先量词与原子组（Python 3.11+）用前瞻捕获仿真；.NET 风格 (?…) 会被拒绝并提示改用 (?P…)——与 Python 行为一致。

## 输入项

- **正则表达式** (text): (?P\\d{4})-(?P\\d{2})
- **测试字符串** (textarea): Paste the text to match against…
- **i — 忽略大小写** (checkbox)
- **m — 多行模式** (checkbox)
- **s — DOTALL（. 匹配换行）** (checkbox)
- **x — VERBOSE** (checkbox)
- **a — ASCII 模式** (checkbox)
- **g — 查找全部（findall）** (checkbox)
- **替换模板（可选）** (text): \\g / \\1
- **Unicode 字符类（\d \w \s 匹配 Unicode）** (checkbox)

## 适用场景

- 调试包含 (?P…) 命名捕获组或 (?P=name) 命名反向引用的复杂 Python 正则表达式时
- 使用 \\g 或 \\1 等模板编写 re.sub 文本替换逻辑并在应用前预览替换结果时
- 需要排查 re.VERBOSE、re.IGNORECASE、re.MULTILINE 或 re.DOTALL 等标志位对匹配行为的影响时

## 工作原理

- 在输入框中填入 Python 正则表达式与待测试的文本内容。
- 根据需求勾选标志位（如忽略大小写、多行模式、DOTALL、VERBOSE 或 ASCII 模式），并可选填写 \\g 替换模板。
- 系统自动解析并执行匹配，输出命中文本列表、命名捕获组详情表格以及 re.sub 替换预览。
- 直接复制下方生成的 Python 代码片段，其中包含已配置的标志常量与 match.group('name') 提取逻辑。

## 使用案例

- 解析结构化文本与日志文件，通过命名分组快速提取时间戳、日志级别和消息体
- 利用 \\g 模板清洗文本数据，批量重构人名、日期格式或代码标识符
- 验证 HTML/XML 等成对标签结构，借助 (?P=tag) 确保闭合标签与起始标签严格一致

## 常见问题

### 支持 .NET 风格的 (?…) 命名组语法吗？

不支持。工具遵循 Python re 模块标准，仅支持 (?P…) 语法，输入 (?…) 会提示错误。

### VERBOSE (flag_x) 模式的作用是什么？

VERBOSE 模式允许在正则表达式中使用空格分行排版并添加以 # 开头的注释，提高复杂正则的可读性。

### 默认情况下 \d、\w、\s 是按 Unicode 还是 ASCII 匹配？

默认启用 Unicode 匹配字符类；若勾选 ASCII 模式（flag_a）或取消勾选 Unicode 字符类，则仅匹配 ASCII 范围。

### 替换模板中如何引用命名捕获组？

在替换模板中使用 \\g 语法引用命名组，同时也支持 \\1、\\g<1> 等数字编号引用。

### 查找全部（flag_g）对应 Python 中的什么函数？

开启查找全部对应 re.findall() 或 re.finditer() 的迭代匹配行为；关闭时仅匹配首个符合条件的结果。

## 相关工具

- [正则执行追踪器](https://elysiatools.com/zh/tools/regex-debugger): 逐步展示正则表达式如何匹配字符串：可视化每次匹配尝试、部分成功、回溯与捕获——是理解正则行为的认知工具，而非只看最终结果
- [C# 正则测试器（.NET）](https://elysiatools.com/zh/tools/csharp-regex-tester): 在线测试 .NET/C# 正则表达式：命名组 ((?…))、IgnoreCase/Multiline/Singleline 选项、匹配高亮、捕获组表格、可直接粘贴的 C# 代码和 IgnorePatternWhitespace 预览。
- [Java 正则测试器](https://elysiatools.com/zh/tools/java-regex-tester): 在线测试 java.util.regex 正则：(?…) 命名组、占有优先量词与原子组、Pattern 标志、\\d 的 ASCII 与 UNICODE\_CHARACTER\_CLASS 语义、可直接粘贴的 Java 代码。
- [正则表达式解释器](https://elysiatools.com/zh/tools/ai-regex-explainer): 使用 AI 将正则表达式分解为可读的解释
- [PCRE2 正则测试器](https://elysiatools.com/zh/tools/pcre-regex-tester): 在线测试 PCRE2 正则：全套命名组语法（(?P)、(?)、(?\\u0027n\\u0027)）、占有优先量词、原子组、\\A \\z \\h 简写——附 pcre2grep 与 C API 代码片段。
- [多规则批量匹配](https://elysiatools.com/zh/tools/multi-pattern-matcher): 一次性对文本执行多个正则表达式模式匹配
- [命名分组测试器](https://elysiatools.com/zh/tools/named-group-tester): 解析并显示正则表达式中的命名捕获组
- [正则表达式测试](https://elysiatools.com/zh/tools/regex-tester): 测试正则表达式匹配文本

## 示例

- [Web Python 图像处理示例](https://elysiatools.com/zh/samples/web-image-processing-python): Web Python 图像处理示例，使用 PIL/Pillow 包括读取、保存、缩放和格式转换
- [正则替换示例](https://elysiatools.com/zh/samples/regex-replace): 用于文本转换和数据清洗的常用正则替换模式集合
- [常用正则表达式](https://elysiatools.com/zh/samples/regex-samples): 用于验证和匹配的常用正则表达式模式
- [Web Python 字符串处理示例](https://elysiatools.com/zh/samples/web-string-processing-python): Web Python 字符串处理示例，包括字符串分割连接、正则表达式和字符串替换
