A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ice24 中级黑马   /  2015-6-21 06:58  /  486 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

正则表达式:其实就是用来简化字符串的操作。

            通过一些限定符号组成一种规则,来验证字符串是否符合规则

结论:正则表达式只能使用在字符串上

学习正则表达式,其实就是要学习正则规则中的各种限定符号

正则表达式中的各种符号:

一般符号:

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种功能:匹配、切割、替换、获取

正则表达式就是用某种模式去匹配一类字符串的公式,主要用来描述字符串匹配的工具。
正则表达式描述了一种字符串匹配的模式。它可以用来检查字符串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。
正则表达式是由普通字符(如字符a到z)以及特殊字符(称为元字符)组成的文字模式。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
正则表达式就是用于描述某些规则的工具。这些规则经常用于处理字符串中的查找或替换字符串。换句话说,正则表达式就是记录文本规则的代码。

正则表达式的应用非常广泛,特别是在字符串处理方面。目前来说,正则表达式已经在很多软件中得到广泛了应用,如Linux、Unix、HP等操作系统,C#、PHP、Java等程序开发环境,以及很多的应用软件中,都可以看到正则表达式的这样或那样的应用。正则表达式常见的应用如下:
验证字符串,即验证给定的字符串或子字符串是否符合指定特征,譬如验证是否是合法的邮件地址、验证是否为合法的HTTP地址等。

查找字符串,从给定的文本中查找符合指定特征的字符串,比查找固定字符串更加灵活方便。
替换字符串,即把给定的字符串中的符合指定特征的子字符串替换为其他字符串,比普通的替换更强大。
提取字符串,即从给定的字符串中提取符合指定特征的子字符串。


在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类实例


13 个回复

正序浏览
学到了,加油。。
回复 使用道具 举报
ice24 中级黑马 2015-6-22 21:19:22
13#
呵呵, 发表于 2015-6-21 10:43
很详细,很强大,新人求支持求鼓励

加油,怀挺:)
回复 使用道具 举报
支持一下!!
回复 使用道具 举报
赞一个  很有用
回复 使用道具 举报
学习一下、、、
回复 使用道具 举报
可以的!
回复 使用道具 举报
tream 中级黑马 2015-6-21 12:07:25
8#
赞一个,还没学到呢
回复 使用道具 举报
谢谢分享.
回复 使用道具 举报
很详细,很强大,新人求支持求鼓励
回复 使用道具 举报
好详细,新人求支持,求鼓励
回复 使用道具 举报
谢谢分享
回复 使用道具 举报
这个不错呢   
回复 使用道具 举报
赞一个~~~~~~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马