虽说正则表达式语法看似统一,但在不同语言与引擎之间仍存在大量细节差异。了解这些差异对于跨平台开发与迁移尤为重要。
基础特性对比
| 特性 | JavaScript | Python re |
Java | .NET | Go | Rust (regex) |
|---|---|---|---|---|---|---|
| 反向引用 | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| 占有量词 | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ |
| 原子组 | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ |
| 命名捕获 | (?<name>) |
(?P<name>) |
(?<name>) |
(?<name>) |
(?P<name>) |
(?P<name>) |
| Unicode 属性 | ✅ (ES2018) | ❌ | ✅ | ✅ | ✅ | ✅ |
| 回溯限制 | 无限 | 无限 | 可配置 | 可配置 | 无回溯 | 无回溯 |
2000/1/19大约 2 分钟