POSIX 规范
Portable Operating System Interface for uniX
定义了 UNIX 操作系统应当支持的功能
包括:
BRE(Basic Regular Expression,基本型正则表达式)
GNU 也对 BRE 做了扩展也支持 『(』、『)』、『{』、『}』、『+』、『?』、『|』 但是需要转义
命令:grep、vi、sed
ERE(Extended Regular Express,扩展型正则表达式)
虽然 BRE 名为“基本”而 ERE 名为“扩展”,但 ERE 并不要求兼容 BRE 的语法,而是自成一体。因此其中的元字符不用转义(在元字符之前添加反斜线会取消其特殊含义)
『(』、『)』、『{』、『}』、『+』、『?』、『|』 不需要转义
命令:egrep、awk
几种 POSIX 流派的说明
流派 |
说明 |
工具 |
BRE |
(、)、{、}都必须转义使用,不支持 +、?、| |
grep、sed、vi(但 vi 支持这些多选结构和反向引用) |
GNU BRE |
(、)、{、}、+、?、|都必须转义使用 |
GNU grep、GNU sed |
ERE |
元字符不必转义,+、?、(、)、{、}、|可以直接使用,\1、\2 的支持不确定 |
egrep、awk |
GNU ERE |
元字符不必转义,+、?、(、)、{、}、|可以直接使用,支持\1、\2 |
grep –E、GNU awk |
常用 Linux/Unix 工具中的表示法
PCRE 记法 |
vi/vim |
grep |
awk |
sed |
* |
* |
* |
* |
* |
+ |
\+ |
\+ |
+ |
\+ |
? |
\= |
\? |
? |
\? |
{m,n} |
\{m,n} |
\{m,n\} |
{m,n} |
\{m,n\} |
\b * |
\< \> |
\< \> |
\< \> |
\y \< \> |
(…|…) |
…‖……‖… |
…‖……‖… |
(…|…) |
(…|…) |
(…) |
…… |
…… |
(…) |
(…) |
\1 \2 |
\1 \2 |
\1 \2 |
不支持 |
\1 \2 |
https://www.infoq.cn/article/2011/07/regular-expressions-6-POSIX
https://www.cnblogs.com/lixuwu/p/7816335.html