Python 和 Java 正则怎么写 - 跨语言正则语法对照

555 字
3 分钟
Python 和 Java 正则怎么写 - 跨语言正则语法对照

🌟 同一个正则,换个语言就报错#

正则的”核心语法”在各语言里大体通用,但字符串转义、命名组、Flags 的写法常常不同。把 JavaScript 里写好的正则直接复制到 Python/Java,经常踩坑。本文做一份对照。


🐍 Python 正则(re 模块)#

import re
pattern = r"\d{4}-\d{2}-\d{2}" # 用原始字符串,避免转义
m = re.search(pattern, text)
if m:
print(m.group())

要点:

  • 原始字符串 r"...":正则里的 \d 直接写,不用双反斜杠;
  • 命名组:(?P<name>\d+),取值 m.group("name");
  • Flags:re.IGNORECASE(re.I)、re.MULTILINE(re.M)、re.DOTALL(re.S);
  • 反向引用:\1 或 (?P=name)。

☕ Java 正则(Pattern / Matcher)#

import java.util.regex.*;
Pattern p = Pattern.compile("\\d{4}-\\d{2}-\\d{2}");
Matcher m = p.matcher(text);
while (m.find()) {
System.out.println(m.group());
}

要点:

  • 字符串里反斜杠要双写:\\d(因为 Java 字符串本身要转义);
  • 命名组:(?<name>\d+),取值 m.group("name");
  • Flags:Pattern.CASE_INSENSITIVE、Pattern.MULTILINE、Pattern.DOTALL,可位或组合;
  • 反向引用:\1 或 \k<name>。

📋 关键差异对照#

项目JavaScriptPythonJava
字面量/re/flagsr"re""re"(双反斜杠)
命名组(?<name>)(?P<name>)(?<name>)
命名组取值m.groups.namem.group("name")m.group("name")
忽略大小写ire.IPattern.CASE_INSENSITIVE
多行mre.MPattern.MULTILINE
DotAllsre.SPattern.DOTALL
后顾支持需固定宽度支持(有限制)

⚠️ 迁移注意#

  • 转义层级:JS 字面量最省心;Python 用 r"";Java 必须双写;
  • 命名组语法不同:Python 是 (?P<name>),JS/Java 是 (?<name>);
  • 后顾宽度:部分语言要求固定宽度,变量长度后顾可能不支持;
  • Unicode:默认行为与标志位因语言而异,处理中文时留意。

用多语言引擎可以查看各语言写法与兼容性提示。


🔧 常见问题#

为什么 Java 里要写两个反斜杠? Java 字符串本身把 `\` 当转义符,所以正则的 `\d` 要写成 `\\d` 才能传给正则引擎。
Python 一定要用 r 前缀吗? 不是必须,但强烈建议。`r"\d"` 比 `"\\d"` 更清晰、少出错。
正则能跨语言复制吗? 基础语法可以;命名组、Flags、后顾等需要按目标语言调整。

💬 总结#

跨语言写正则,记住三件事:转义层级、命名组语法、Flags 名称。先在正则测试器里验证逻辑,再按目标语言调整写法。

立即体验:访问 多语言引擎

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

最后更新于 2026-09-13,距今已过 33 天

部分内容可能已过时

相关文章 智能推荐
1
正则表达式语法速查表 - 元字符/量词/断言/Flags 大全
正则工具 正则表达式语法速查:元字符、字符类、量词、分组、断言、边界、转义与 Flags 一览,含含义与示例,适合随时查阅。附在线正则速查与测试工具。
2
正则表达式教程 - 从零入门到常用语法(系统整理)
正则工具 正则表达式系统教程:从字符、量词、分组、锚点到断言与 Flags,循序渐进讲解,配大量示例、实战练习与常见错误,适合零基础入门与查漏补缺。附在线正则学习与测试工具。
3
密码正则和用户名正则怎么写 - 强度校验实例
正则工具 密码正则、用户名正则怎么写?本文给出不同强度密码(含大小写/数字/特殊字符)的正则、用户名规则正则,并用前瞻断言实现"至少包含"条件。附在线常用格式正则工具。
4
手机号正则和邮箱正则怎么写 - 常用正则表达式示例大全
正则工具 手机号正则、邮箱正则、身份证正则、URL正则、银行卡正则怎么写?给出可直接复制使用的表达式、逐段解释与正误示例,覆盖网络/联系/身份/日期/数字/字符/开发场景,并说明各语言引擎差异。附在线常用格式正则工具。
5
正则匹配中文怎么写 - 汉字/中文标点匹配方法
正则工具 正则怎么匹配中文?本文给出汉字范围 [\u4e00-\u9fa5] 与 Unicode 属性 \p{Script=Han} 两种写法,说明中文标点、全角字符、长度统计的注意点。附在线正则测试工具。
随机文章 随机推荐
公告
🎉 已升级 2.0 版本,欢迎使用。
分类
标签
站点统计
文章
197
分类
24
标签
747
总字数
334,099
运行时长
0 天
最后活动
0 天前

目录