正则表达式/正则表达式语法
< 正则表达式
本文将从形式语言角度讲解正则 形式语言从字符串集合的运算定义“语言”
语言间的运算就是 Σ*幂集上的运算。
Σ是所有合法字符串,Σ*幂集就是这些字符串所能形成的所有组合。
正则的匹配规则就是对应着字符串集合的交集、并集、补集等运算。
连接运算: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次。对应幂运算