在学习了自动机之后,对java中的正则表达式有了更深刻的理解,同时也认识到java中的正则表达式已经很简化了
正则表达式是一个遵循特定规则,利用操作符、终止节点和其他非终止节点,构造新的字符串的方法
一、操作符
1、连接:
x ::= y z
意味着x是由后面连接z生成的
2、重复* :
x ::= y*
意味着x是由若干y重复而成的
3、选择|
: x ::= y | z
意味着x要么是y要么是z
扩展运算符:
4、optional
x ::= y?
x是y或空串
5、非负
x ::= y+
x由不少于1个y连接而成
6、[...]和[^...]
这是集合和集合的非
x ::= [a-c] 与 x ::= 'a' | 'b' | 'c'等价
x ::= [^a-c] 与 x ::= 'd' | 'e' | 'f' | ...等价
二、构造方法
非终结符 ::= 终结符与非终结符和操作符的表达式
举例
url ::= 'http://' host '/'
host ::= word.word
word ::= [a-z]+
可以表示所有网址