不喜欢广告? 无广告 今天

Regex 风格转换器(PCRE / JS / Python / Go)

开发人员
广告 移除?

测试面板

语法参考

广告 移除?

指导

正则表达式语言风格转换器 (PCRE / JS / Python / Go)

正则表达式语言风格转换器

在各种编程语言风格之间转换正则表达式:PCRE (PHP)、JavaScript、Python、Go、Java 和 Ruby。自动转换命名组、标志、反向引用和其他语法差异。高亮显示不兼容的功能并提供清晰的警告。包含一个测试面板,用于使用示例字符串验证您转换后的正则表达式。

如何使用

输入您的正则表达式模式,选择源语言风格(编写它的语言)和目标语言风格(您想转换到的语言)。转换后的正则表达式会即时显示,所有标志都会被翻译。查看转换说明以了解所做的更改以及有关不支持功能的警告。使用测试面板根据示例文本验证转换后的模式。

特征

  • 6 种正则表达式语言风格 — PCRE (PHP)、JavaScript (ES2018+)、Python (re 模块)、Go (regexp)、Java (java.util.regex) 和 Ruby。可在任意两种风格之间转换。
  • 命名组转换 — 自动在 (?P…) (PCRE/Python/Go) 和 (?…) (JS/Java/Ruby) 语法之间进行转换。
  • 标志翻译 — 在不同语言风格之间转换标志:/gi (JS) ↔ re.IGNORECASE (Python) ↔ (?i) 内联 (PCRE/Go) ↔ Pattern.CASE_INSENSITIVE (Java)。
  • 反向引用转换 — 命名反向引用转换:(?P=name) ↔ k 在不同语言风格之间。
  • 不兼容性警告 — 颜色编码警报:绿色表示转换顺利,黄色表示语法更改,红色表示不支持的功能(例如,Go 不支持后行断言,JS 不支持原子组)。
  • 测试面板 — 使用 JavaScript 的 RegExp 引擎,根据示例字符串测试转换后的正则表达式。显示匹配项、捕获组和匹配计数。
  • 语法参考 — 可折叠的参考表,显示所有语言风格之间的主要区别:命名组、先行/后行断言、标志、字符类、原子组、Unicode 支持。
  • 自动转换 — 在您键入或更改语言风格时,结果会即时更新。

转换内容

命名组: (?P) ↔ (?) 语法差异。
命名反向引用: (?P=name) ↔ \k ↔ \g{name}。
标志: 内联 (?imsx)、后缀 /gi 和特定于语言的常量。
后行断言: PCRE/JS/Java 支持,Python/Ruby 有限,Go 不支持。
原子组: (?>…) — 仅限 PCRE/Java/Ruby;JS/Python/Go 会发出警告。
占有量词: a++ — 仅限 PCRE/Java/Ruby。
字符类: \R、\h、\v (PCRE 特有) 会为其他语言风格标记。
评论: (?#…) 语法 — 仅限 PCRE/Python。
条件: (?(cond)yes|no) — 仅限 PCRE。

广告 移除?

为什么不同编程语言的正则表达式风格不同?

正则表达式的实现是在不同编程语言中独立发展的。Perl 的正则表达式引擎 (PCRE) 成为功能最丰富的,添加了命名组、后行断言、原子组和其他高级功能。其他语言则采纳了其子集:JavaScript 最初只有基本的正则表达式,并逐渐添加了功能(ES2018 中的命名组、ES2018 中的后行断言)。Python 的 re 模块使用从早期提案继承的 (?P) 语法。Go 则故意选择了一个更简单的正则表达式引擎 (RE2),它保证线性时间匹配,但牺牲了后行断言等功能。每种语言在功能强大和性能之间都做出了不同的权衡。

哪些正则表达式功能无法转换?

某些功能只存在于一种或两种语言风格中,而在其他语言风格中没有等效功能。后行断言在 Go 的 RE2 引擎中不存在——没有变通方法,只能重新设计模式。原子组和占有量词(PCRE/Java/Ruby)在 JavaScript、Python 或 Go 中没有直接的等效项。PCRE 特有的字符类,如 \R(任何换行符)、\h(水平空格)和 \v(垂直空格),需要扩展为字符类等效项。条件模式 (?(cond)yes|no) 仅限 PCRE。此工具会警告您这些不兼容之处,以便您知道哪些需要手动处理。

测试面板对所有语言风格都准确吗?

测试面板使用 JavaScript 的原生 RegExp 引擎,因此可以准确地测试 JavaScript 正则表达式的行为。对于其他目标语言风格,测试提供了合理的近似值,但在边缘情况下可能有所不同——尤其是在 Unicode 处理、换行行为以及 JavaScript 不支持的功能(如原子组)方面。在生产环境中使用时,请务必在实际的目标语言中测试转换后的正则表达式。测试面板最适合用于快速验证基本模式匹配。

PCRE 和 JavaScript 正则表达式有什么区别?

PCRE(Perl 兼容正则表达式,PHP 使用)是最丰富的功能集:它支持使用 (?P) 的命名组、可变长度后行断言、原子组 (?>…)、占有量词 (a++)、条件模式、递归模式以及内联标志作用域 (?i:…)。JavaScript 正则表达式更简单:命名组使用 (?),后行断言在 ES2018 中添加,并且不支持原子组、占有量词或条件。PCRE 使用类似 JavaScript 的 /pattern/flags 语法,但支持更多标志(x 用于详细模式,s 用于 DOTALL)。将 PCRE 转换为 JS 通常需要删除高级功能。

想要享受无广告的体验吗? 立即无广告

安装我们的扩展

将 IO 工具添加到您最喜欢的浏览器,以便即时访问和更快地搜索

添加 Chrome 扩展程序 添加 边缘延伸 添加 Firefox 扩展 添加 Opera 扩展

记分板已到达!

记分板 是一种有趣的跟踪您游戏的方式,所有数据都存储在您的浏览器中。更多功能即将推出!

广告 移除?
广告 移除?
广告 移除?

新闻角 包含技术亮点

参与其中

帮助我们继续提供有价值的免费工具

给我买杯咖啡
广告 移除?