我们先来看语法
基本运算符
- 连接(Concatenation):
x ::= y z 表示x是y与z的连接 - 重复(Repetition)
x ::= y* 表示x为若干个(包括0个)y的连接 - 选择(Union)
x ::= y | z 表示x为y或者z
特别的运算符
-
?
x ::= y? 表示x 为y或者为空 -
+
x ::= y+ 表示x为一个或者多个y的连接 -
[ …]
x ::= [aeiou] 即为x ::= ‘a’|‘e’|‘i’|‘o’|‘u’
x ::= [a-c] 即为x ::= ‘a’|‘b’|‘c’ -
[^… ]
x ::= [^a-c] 即为x ::= ‘d’|‘e’|‘f’|…
运算符的优先级
1,后缀运算符*,?,+
2,连接
3,选择 |
最后当然不能忘了括号的特殊性
正则语法
通过替换每一个非终止节点之后,可以表达为一个产生式而不包含任何非终止节点
什么是正则表达式?
正则表达式(regex)是使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。
其实就是去除上面正则语法中的引号和空格,使得表达更加简洁。
正则表达式中特有的运算符