在表示数量时,如果一个正则表达式X,后面没有加表示数量的符号,那就默认出现一次。如果指定需要出现n次,那就用{n},例如a{n},就是匹配a出现n次的。a{n,}表示a出现至少n次的,而这个时候就会默认是贪婪模式,也是匹配符合条件的出现次数最多的。a{n,m}表示最少出现n次,最多出现m次,默认是找出现m次的。如果是a{n,m}?就是勉强模式,即匹配出现n也就是最少的。a{n,}?也是只匹配出现n次的。
一般情况下,X?表示出现0次或者1次,默认贪婪模式。X??是勉强模式。
X+表示匹配出现1次或多次,默认贪婪模式。X+?是勉强模式。
X*表示出现0次或者多次,默认贪婪模式。X*?是勉强模式
通过()可以捕获符合括号内表达式的匹配值,并且进行存储,然后通过\nnn,进行引用。但是如果存储过多会造成内存占用过大,所以就可以通过(?:expression)不对其进行存储,那这样就没法引用了,意义不大。\nnn,是括号的顺序,以左括号为准,不管嵌套几个括号都以左括号为准,从左往右,1、2、3、4的排序。
上面的例子中,说明在竖线处的位置,后面是否符合?=后面的表达式
加上!表示非,红框的几个字母就不符合要求
表示邮箱
\w+@[a-z0-9A-Z]+(\.[A-Za-z]+){1,2}
java中正则表达式的用法