Glab

正则表达式03:流派


正则表达式流派

正则表达式在不同编程语言和工具中有不同的实现,形成了几个主要的流派。了解这些流派之间的差异对于编写可移植的正则表达式非常重要。

1. 主要正则表达式流派

(1) POSIX 基本正则表达式(BRE)

(2) POSIX 扩展正则表达式(ERE)

(3) Perl 兼容正则表达式(PCRE)

(4) JavaScript 正则表达式

(5) .NET 正则表达式

2. 主要流派特性对比

特性BREEREPCREJavaScript.NET
基本元字符 . * ^ $
字符类 [ ]
+ 量词
? 量词
{ } 量词需转义
( ) 分组需转义
选择
\d, \w
非贪婪匹配
零宽断言部分
模式修饰符

3. 不同工具/语言的正则表达式实现

4. 编写可移植正则表达式的建议

  1. 对于简单模式,使用最基本的特性(如 ., *, ^, $, [ ])
  2. 明确知道目标环境的正则表达式支持程度
  3. 使用在线测试工具时选择正确的语言/引擎
  4. 在跨平台脚本中,考虑使用最通用的子集
  5. 必要时添加注释说明正则表达式使用的特定特性

5. 各流派独特特性示例

PCRE/Perl 特有:

# 条件匹配
/(?(condition)yes-pattern|no-pattern)/

# 递归匹配
/(a|b(?R)c)/

.NET 特有:

// 平衡组匹配
(?<group-name>...)
(?'group-name'...)

JavaScript 限制:

// ES2018 之前不支持后顾断言
/(?<=a)b/  // 在旧版 JS 中无效

了解这些差异可以帮助你避免在不同环境中使用正则表达式时遇到的问题。

当前页面是本站的「Baidu MIP」版。查看和发表评论请点击:完整版 »