分类:正则表达的4个知识点:定位符、断言、**限定符**和分组
定位符:表示行和单词的开始和结尾。
^表示必须以什么字符开头;
$表示必须以什么字符结尾。
限定符:即限定某个字符或某类字符出现的次数。
*****表示重复0次或更多次(任意次数);
{n}表示重复n次;
{n,}表示重复至少n次;
{n,m}表示重复n-m次;
特例:
?表示重复0次或1次(最多1次);等价于 {0,1}
+匹配前面一个表达式 1 次或者多次。等价于 {1,}。
分组:即把一个正则表达式的全部或部分分成一个或多个组。
分组使用的字符为“(”和“)”,即左括号和右括号。每一个子表达式都可以当做一个整体来处理
**x|y**符合x 或者 y;
断言:含有判断条件,包含先行断言、后行断言和条件表达式。
x(?=y) 匹配’x’仅仅当’x’后面跟着’y’.这种叫做先行断言。
x(!=y) 仅仅当’x’后面不跟着’y’时匹配’x’,这被称为正向否定查找。
练习
匹配自然数
eg: 01 :false 因为0开头了
0 :true
解答:
(^[1-9]+[0-9]*$)|(^0$)
首先分组为``(1+[0-9]*) ‘ 和 ‘ ( 0 )` 和` (^0)‘和‘(
0
)`
对于第一组^[1-9]表示 以 1-9 中任意一个数字开头 +[0-9]* 表示后面跟任意个 0-9 的数字 $表示 以前面的 0-9 字符结尾(因为前面的* 表示任意个0-9)
同理分析得 (^0$) 表示一个单独的 0
匹配百分数(小于两位小数,且整数部分小于100