正闭包是广泛应用于
计算机科学领域中编译领域中有关
正则表达式的一元运算。正闭包是由克林闭包衍生出的概念,因而它属于正则表达式的扩展运算。
20世纪50年代,美国数学家
斯蒂芬·科尔·克莱尼提出了正则表达式的三类基本运算:并、连接、克林闭包(又称星闭包,
Kleene星号)。此后学界发现很多时候需要描述一个语言连接1次或以上得到的集合,因此由克林闭包的概念衍生出了正闭包的概念。
例:由a和b组成且不含有三个连续的b的字符串的正则表达式(All strings of a's and b's that contain no three consecutive b's)。
解析:不含有三个连续的b意味着除了{b}和{bb}这两种不含有a的情况外,每至多出现2个连续的b后必须出现至少1个a,因此构造出,但这样写忽略了以b结尾的情况,因此要在后面连接。这样再并上b和bb,得到正解。