正则表达式/正则表达式语法

维基教科书,自由的教学读本

本文将从形式语言角度讲解正则 形式语言从字符串集合的运算定义“语言”

语言间的运算就是 Σ*幂集上的运算。

Σ是所有合法字符串,Σ*幂集就是这些字符串所能形成的所有组合。

正则的匹配规则就是对应着字符串集合的交集、并集、补集等运算。

连接运算:L1L2 = { xy | x 属于L1并且 y 属于L2 }。

幂运算:Ln = L … L (共 n 个 L 连接在一起),L0 = {ε}。

Kleene星号|闭包运算:L* = L0∪L1∪…∪Ln∪…。



正则表达式中一般字母可以直接对目标文本进行匹配,但是还有一些在正则语言中具有特殊含义,需要进行转义才能匹配,如^{+<[*)>.(|$\?等字符,需要在前面加\才能正确匹配。

[]对内部的单个字符进行匹配,如[abc]可匹配a或b或c,只匹配[]内出现的字母一次。

[^]匹配非[]内部出现的字符。对应补集。如[^abc]可匹配a、b、c之外的一个字母

.匹配除换行符之外的任意一个字符。

\s 匹配空白符,包括换行,\S 匹配非空白符,不包括换行。

还有 * 对应克莱尼星号,匹配前面的子表达式零次或多次。

一串正则与一串正则可通过连接运算连接在一起,匹配更长的一串字符。

{n} n是非负整数。匹配确定的n次。对应幂运算