PCRE正则和POSIX正则
正则表达式默认匹配整个文本,这个时候^
和$
匹配整个文本的开始和结束。
使用 m
多行模式后,匹配每行的开头和结尾;.
在默认情况下不匹配换行符,但在s
单行模式下能匹配。Go
中自带的正则包不支持设置模式。
普通正则表达式(PCRE风格)
使用优先匹配(first match)原则
从左到右扫描正则表达式,一旦找到匹配就停止
对于交替选择
(a|b)
,会按顺序尝试每个选项,选择第一个匹配的这种行为称为"急切匹配"或"短路匹配"
POSIX正则表达式
使用最长左匹配(longest leftmost)原则
尝试所有可能的匹配,然后选择最长的匹配
对于交替选择
(a|b)
,会评估所有选项,选择能匹配的最长字符串这种行为确保总是返回最长的可能匹配
特性
普通正则表达式 (PCRE)
POSIX 正则表达式
标准来源
Perl 语言扩展
IEEE POSIX 标准
匹配方式
贪婪匹配(默认)
最长左匹配
功能丰富度
功能丰富,支持高级特性
功能相对基础
元字符转义
多数元字符需要转义
部分元字符需要转义
扩展支持
支持前瞻、后顾等高级特性
不支持高级扩展
性能
通常更快
可能稍慢
可读性
更灵活但可能更复杂
更简单直观
最后更新于