加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式学习笔记之POSIX

发布时间:2020-12-14 01:38:46 所属栏目:百科 来源:网络整理
导读:POSIX规范 正则表达式两大流派:PCRE与POSIX规范。 之前笔记中的正则表达式记法,如d、s、w之类的字符组简记法就是PCRE规范的正则表达式的特征。 POSIX的全称是Portable Operating System Interface for unix,它由一系列的规范构成,定义了UNIX操作系统应

POSIX规范

正则表达式两大流派:PCRE与POSIX规范。

之前笔记中的正则表达式记法,如d、s、w之类的字符组简记法就是PCRE规范的正则表达式的特征。

POSIX的全称是Portable Operating System Interface for unix,它由一系列的规范构成,定义了UNIX操作系统应当支持的功能,因此POSIX规范的正则表达式其实就是正则表达式的POSIX规范,它分为BRE(基本型正则表达式)和ERE(扩展型正则表达式)两大流派。

BRE流派

Linux下的vi、grep、sed工具属于BRE这一派,BRE中元字符(、)、{、}必须转义之后才具有特殊意义,比如a{1,2}才能匹配字符串a或aa。

BRE不支持+、?量词,多选结构和反向引用1、2。

GNU对BRE做了扩展,使之支持+、?、|,但使用时需转义。也支持1、2之类的反向引用。

ERE流派

Linux下的egrep、awk属于ERE流派。这一流派中使用元字符时不用转义,支持量词等。

现在的BRE和ERE的主要差异是元字符是否需转义。

POSIX字符组

PCRE流派中把[....]称为“字符组”;在POSIX中,它们叫做"方括号表达式",其作用与规则与常说的"字符组"完全一样。但是POSIX中的"方括号表达式"不支持使用uxxxx的形式表示Unicode字符。即遵循POSIX规范的正则表达式无法用[u4e00-u9fff]来匹配"任意一个中文字符"。
POSIX自己也定义了字符组,称为"POSIX字符组",是一些事先定义好的组合,比如[:digit:]就是一个POSIX字符组,它等价于[0-9],[:alpha:]等价于[a-zA-Z]。此外PCRE中常见的d、w、s在POSIX中没有定义。
POSIX字符组不能直接使用,只能用于方括号表达式内部,如[[:digit:]]、[[:alpha:]];POSIX字符组也可以与其他方括号表达式合用,如[a-zA-Z[:digit:]]、[^[:alpha:]]。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读