# PCRE2 正则测试器

在线测试 PCRE2 正则：全套命名组语法（(?P)、(?)、(?\\u0027n\\u0027)）、占有优先量词、原子组、\\A \\z \\h 简写——附 pcre2grep 与 C API 代码片段。

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

- **分类:** Development

- **关键词:** pcre2 正则测试, pcre 在线, php preg, 正则表达式, 原子组

## 概述

面向 PCRE2 方言（PHP preg\_\*、pcre2grep、Delphi、R 等众多工具）的正则测试器。PCRE2 接受全部命名组语法——(?P…)、(?…)、(?\\u0027year\\u0027…)——反向引用支持 \\k、\\k{year}、\\g{year} 与 (?P=year)；测试器全盘接受并转译到平台的 ECMAScript 引擎执行，报告匹配、命名捕获组与替换预览。JavaScript 缺少的简写会被展开：\\A 与 \\z 绝对锚点、\\Z 末尾换行前、\\h / \\H 水平空白。占有优先量词与原子组用前瞻捕获仿真，确实阻止回溯；\\d \\w \\s 保持 PCRE2 默认的 ASCII 语义（勾选 Unicode 字符类可仿真 PCRE2\_UCP）。ECMAScript 引擎无法表达的结构——递归 ((?R)、(?1))、条件 ((?(1)…))、调用 (?C…)、\\K、\\G、回溯控制动词——会被检测并给出解释性拒绝。报告还会生成 pcre2grep 命令行与 pcre2\_compile / pcre2\_match 的 C API 骨架。

## 输入项

- **正则表达式** (text): (?\\d{4})-(?\\d{2})
- **测试字符串** (textarea): Paste the text to match against…
- **i — 不区分大小写** (checkbox)
- **m — 多行模式** (checkbox)
- **s — dotall（. 匹配换行）** (checkbox)
- **x — 扩展模式** (checkbox)
- **U — 反转贪婪** (checkbox)
- **g — 全局扫描** (checkbox)
- **替换模板（可选）** (text): \\g / \\1
- **Unicode 字符类（\d \w \s 匹配 Unicode）** (checkbox)

## 适用场景

- 在编写 PHP preg_* 函数、Delphi 或 R 脚本中的正则表达式需要验证语法与捕获结果时。
- 排查包含原子组 (?>...) 或占有优先量词 (如 ++, *+) 的 PCRE2 规则以防止回溯灾难时。
- 需要构造 pcre2grep 命令行参数或生成 pcre2_compile / pcre2_match 的 C 语言接口调用骨架时。

## 工作原理

- 输入 PCRE2 正则表达式，选择匹配标志（如 i、m、s、x、U、g）及 Unicode 字符类设置。
- 系统将 PCRE2 专有语法（如 \A、\z、\h、命名组和原子组）解析并转译为等价逻辑进行实时匹配与捕获。
- 检测不支持的结构（如递归 (?R)、条件 (?(1))、\K 等）并提示错误原因，同时输出匹配高亮、替换预览与代码片段。

## 使用案例

- PHP 后端开发人员调试包含复杂反向引用与命名组的 preg_replace 替换逻辑。
- 系统运维人员调试用于服务器多行日志过滤与检索的 pcre2grep 正则表达式。
- C/C++ 开发者验证基于 libpcre2 的字符串解析规则并快速获取初始化调用骨架。

## 常见问题

### 支持哪些命名捕获组语法？

支持全部 PCRE2 命名语法，包括 (?P...)、(?...) 和 (?'name'...)，以及对应的反向引用。

### 原子组与占有优先量词是如何生效的？

工具通过前瞻捕获机制仿真原子组与占有优先量词，能真实锁定匹配并阻止回溯。

### \d、\w、\s 默认是 ASCII 还是 Unicode？

默认遵循 PCRE2 的 ASCII 语义，勾选“Unicode 字符类”选项可仿真 PCRE2_UCP 行为。

### 为什么某些高级 PCRE2 语法会被拒绝？

递归 ((?R))、条件分支 ((?(1)...))、\K 和回溯动词无法在浏览器引擎中安全仿真，工具会明确拦截并给出提示。

### 是否可以生成后端开发使用的代码？

可以，工具会在测试结果中直接生成对应的 pcre2grep 终端命令以及 C 语言 API 调用模板。

## 相关工具

- [Java 正则测试器](https://elysiatools.com/zh/tools/java-regex-tester): 在线测试 java.util.regex 正则：(?…) 命名组、占有优先量词与原子组、Pattern 标志、\\d 的 ASCII 与 UNICODE\_CHARACTER\_CLASS 语义、可直接粘贴的 Java 代码。
- [正则表达式速查表](https://elysiatools.com/zh/tools/regex-cheat-sheet): 可搜索、多语言的正则表达式语法速查表——字符类、锚点、量词、分组与引用、环视断言、转义序列和标志位，并内置快速测试器
- [正则执行追踪器](https://elysiatools.com/zh/tools/regex-debugger): 逐步展示正则表达式如何匹配字符串：可视化每次匹配尝试、部分成功、回溯与捕获——是理解正则行为的认知工具，而非只看最终结果
- [正则表达式测试](https://elysiatools.com/zh/tools/regex-tester): 测试正则表达式匹配文本
- [正则表达式性能基准测试](https://elysiatools.com/zh/tools/regex-benchmark): 比较不同正则表达式的性能，识别瓶颈并检测退化情况
- [C# 正则测试器（.NET）](https://elysiatools.com/zh/tools/csharp-regex-tester): 在线测试 .NET/C# 正则表达式：命名组 ((?…))、IgnoreCase/Multiline/Singleline 选项、匹配高亮、捕获组表格、可直接粘贴的 C# 代码和 IgnorePatternWhitespace 预览。
- [Python 正则测试器（re 模块）](https://elysiatools.com/zh/tools/python-regex-tester): 在线测试 Python re 模块正则：(?P…) 命名组、(?P=name) 反向引用、VERBOSE 模式、findall 行为与 \\g 替换模板——附可直接粘贴的 Python 代码。
- [正则表达式铁路图可视化器](https://elysiatools.com/zh/tools/regex-railroad-diagram-visualizer): 把正则表达式渲染为 SVG 铁路图（语法图），显示字面量、分组、分支与重复，并标注捕获组编号与标志说明

## 示例

- [正则替换示例](https://elysiatools.com/zh/samples/regex-replace): 用于文本转换和数据清洗的常用正则替换模式集合
- [常用正则表达式](https://elysiatools.com/zh/samples/regex-samples): 用于验证和匹配的常用正则表达式模式
- [正则表达式模式替代方案](https://elysiatools.com/zh/samples/regex-alternatives): 多种编写相同正则表达式模式的方法，在可读性、性能和准确性方面有不同的权衡
- [正则表达式命名捕获组](https://elysiatools.com/zh/samples/regex-named-groups): 使用命名捕获组从文本中提取结构化数据的正则表达式模式集合。命名组通过为捕获的部分分配有意义的名称，使模式更易读和更易维护。
