通过一些限定符号组成一种规则,来验证字符串是否符合规则
结论:正则表达式只能使用在字符串上
学习正则表达式,其实就是要学习正则规则中的各种限定符号
正则表达式中的各种符号:
一般符号:
x 表示任何字符 例:”NBA” 正则:“N[A-Z]”
\\ 表示反斜线 例:“\\” 在正则中就是“\”
\t 制表符
字符符号: [ ]表示范围的意思
[abc] 表示要么是a要么是b还可以是c(只能是其中任意一个)
例:”NBA” 正则:”N[ABC]A” 匹配正确:NBA NAA NCA
[^ab] 表示不能是a或b(除了a,b都可以)
[a-z] 表示26个小写字母
[A-Z] 表示26个大写字母
[a-zA-Z] 表示26个大小写字母
[a-d[x-z]] 表示可以是a~d之间或x-z之间的任意字符
[a-d&&[d-f]]表示只能是d。必须在两个范围中都要符合 。(交集)
[a-d&&[^d-f]] 表示只能是a,b,c。
[a-z&&[^xyz]]表示只能是除去x,y,z后的所有小写字母
[0-9] 表示0~9之间任意数字
预定义字符:
. 点在正则中可以表示任意的符号 例:以a开对后面可以是任意字符 “a.”
\d 表示数字。[0-9] 例:“A[\\d]C” 表示A和C之间可以任意的0~9之间的数字
\D 表示非数字。[^0-9]
\w 表示[0-9A-Za-z_]。可以是任意数字、任意大小写字母、下划线
\W 表示[^0-9A-Za-z_]
边界符:
^ 表示行的开头 例:“^h.” 表示只能是以h作为开头
$ 表示行的结尾 例:”^h.o$” 表示只能以h作为开头,以o作来结尾
数量词: 注意:数量词前面必须有存在正则符号
? 表示数量词?前面的正则符号可以有0次或1次
* 表示数量词*前面的正则符号可以出现0次或多次
+ 表示数量词+前面的正则符号可以出现1次或多次
{n} 表示数量词{n}前面的正则符号必须出现n次
{n,} 表示数量词{n,}前面的正则符号至少出现n次
{n,m} 表示数量词{n,m}前面的正则符号至少出现n次,但不能超过m次
在正则表达式中,正则存在4种功能:匹配、切割、替换、获取
正则表达式就是用某种模式去匹配一类字符串的公式,主要用来描述字符串匹配的工具。在java中使用String对象中的matches方法用来匹配正则规则。返回值为boolean
在一个正则表达中,后面的正则想要去使用前面已经存在的正则规则时,就必须把前面的正则规则包装起来,而后面的正则就可以去引用前面已经包装的正则规则了
正则怎么样进行封装(包装)呢?
在正则表达式中使用小括号”()”把前面已经存在的正则规则进行封装。
被”()”包含的内容,称为正则中的组。正则中的组都具有一个编号,称为组号
后面书写的正则怎么使用前面已经封装过的正则规则呢?
后面的正则中使用组的编号(组号)来引用前面已经存在的规则。使用\\组号引用
例:((a)((bc)d)) 组的是使用()包含起来,从前向后每一个()就表示一个组,都具有一个组号
第一组:((a)((bc)d)) 组号:1
第二组:(a) 组号:2
第三组:((bc)d) 组号:3
第四组:(bc) 组号:4
使用组号来引用封装的正则规则。使用\\组号 的方式引用前面存在的正则规则
正则的获取功能
正则表达式是在java中存在的一种规则,而java语言对于存在的事物,都会使用类来描述。在java.util.regex包中存在一个用来描述正则表达式的类
通过查阅API,可以获得:
1, Pattern类是java中正则表达式的实例对象
2, Pattern类是最终的类,不能被继承
3, 先要有Pattern类的实例(正则表达式的实例对象),通实例对象创建匹配器对象(Matcher类),最后是使用匹配器对象中的matches方法来对正则进行验证
4, Pattern类没有构造函数。需要使用compile()方法获取Pattern类实例
呵呵, 发表于 2015-6-21 10:43
很详细,很强大,新人求支持求鼓励
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |