老师在第一节实验课上讲检查输入的合法性的时候,有提到用正则表达式来检查,但是由于之前并没有学过,所以查了一些资料,深入了解了一下,整理在这里。
正则表达式
正则表达式是一种描述模式的方法,他能用自然、简单而强大的3种组合操作来描述模式。
规则
模式的描述是由三种基本操作以及作为操作数的字符组成。
操作:
1.连接操作:如AB,就是A和B连接,就指定了一种语言{AB},它含有一个由两个字符组成的字符串AB
2.或操作:可指定多种可能的匹配,用“|”表示这个操作,例如 A|B 就指定了一个语言{A,B}。连接操作优先级高于或,所以AB|CDE指定的是{AB,CDE}。
3.闭包操作:可以将模式的部分重复任意多次,包括0次,用“*”标记在被重复的模式之后。闭包优先级高于连接,故AB*表示的是一个A和任意多个B组成的字符串,如A,AB,ABBB…
4.括号,同普通运算,括号可以改变优先级
举几个例子
C(AC|B)D ——————{CACD,CBD}
(A|C)((B|C)D)——————{ABD,ACD,CCD,CBD}
(AB)*——————{空,AB,ABAB,ABABAB…}
额外规则
对基本操作进行扩展。
1.字符集描述符
通配符“.”:能够表示任意字符
指定的集合[] :表示包含在方括号里字符中的任意一个
范围集合:包含在方括号中,如[A-Z],表示A到Z中的任意一个
补集"^":包含在方括号中,表示一个不是这个方括号中的字符
2.闭包的简写
指定闭包内元素的具体重复字数
至少重复一次:标记为“+”,如(AB)+ ———— {AB,ABAB,ABABAB…}
重复0次或1次:标记为“?”,如(AB)? ————{空,AB}
重复指定次数:由{}指定次数,如(AB){3} ————{ABABAB}
重复指定范围的次数:由{}指定次数,如(AB){1-2} ————{AB,ABAB}