PCRE正则和POSIX正则

正则表达式默认匹配整个文本,这个时候^$匹配整个文本的开始和结束。

使用 m多行模式后,匹配每行的开头和结尾;.在默认情况下不匹配换行符,但在s单行模式下能匹配。Go中自带的正则包不支持设置模式。

普通正则表达式(PCRE风格)

  • 使用​​优先匹配​​(first match)原则

  • 从左到右扫描正则表达式,一旦找到匹配就停止

  • 对于交替选择 (a|b),会按顺序尝试每个选项,选择第一个匹配的

  • 这种行为称为"急切匹配"或"短路匹配"

POSIX正则表达式

  • 使用​​最长左匹配​​(longest leftmost)原则

  • 尝试所有可能的匹配,然后选择最长的匹配

  • 对于交替选择 (a|b),会评估所有选项,选择能匹配的最长字符串

  • 这种行为确保总是返回最长的可能匹配

特性
普通正则表达式 (PCRE)
POSIX 正则表达式

​标准来源​

Perl 语言扩展

IEEE POSIX 标准

​匹配方式​

贪婪匹配(默认)

最长左匹配

​功能丰富度​

功能丰富,支持高级特性

功能相对基础

​元字符转义​

多数元字符需要转义

部分元字符需要转义

​扩展支持​

支持前瞻、后顾等高级特性

不支持高级扩展

​性能​

通常更快

可能稍慢

​可读性​

更灵活但可能更复杂

更简单直观

最后更新于