黑马程序员——java基础---正则表达式

原创 2015年07月10日 10:47:19

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

正则表达式

一、概述

定义:符合一定规则的表达式。

作用:用于专门操作字符串。

特点:用于一些特定的符号来表示一些代码操作。这样就简化书写。

所以学习正则表达式,就是在学习一些特殊符号的使用。

好处:可以简化对字符串的复杂操作。

弊端:符号定义越多,正则越长,阅读性越差。

二、构造摘要

仅仅列举一些常用的功能,具体的详见API。

字符

x

字符 x

\\

反斜线字符

\0n

带有八进制值 0 的字符 n (0 <= n <= 7)

\0nn

带有八进制值 0 的字符 nn (0 <= n <= 7)

\0mnn

带有八进制值 0 的字符 mnn(0 <= m <= 3、0 <= n <= 7)

\xhh

带有十六进制值 0x 的字符 hh

\uhhhh

带有十六进制值 0x 的字符 hhhh

\t

制表符 ('\u0009')

\n

新行(换行)符 ('\u000A')

\r

回车符 ('\u000D')

\f

换页符 ('\u000C')

\a

报警 (bell) 符 ('\u0007')

\e

转义符 ('\u001B')

\cx

对应于 x 的控制符

字符类

[abc]

a、b 或 c(简单类)

[^abc]

任何字符,除了 a、b 或 c(否定)

[a-zA-Z]

a 到 z 或 A 到 Z,两头的字母包括在内(范围)

[a-d[m-p]]

a 到 d 或 m 到 p:[a-dm-p](并集)

[a-z&&[def]]

d、e 或 f(交集)

[a-z&&[^bc]]

a 到 z,除了 b 和 c:[ad-z](减去)

[a-z&&[^m-p]]

a 到 z,而非 m 到 p:[a-lq-z](减去)

预定义字符类

.

任何字符(与行结束符可能匹配也可能不匹配)

\d

数字:[0-9]

\D

非数字: [^0-9]

\s

空白字符:[ \t\n\x0B\f\r]

\S

非空白字符:[^\s]

\w

单词字符:[a-zA-Z_0-9]

\W

非单词字符:[^\w]










 



边界匹配器

^

行的开头

$

行的结尾

\b

单词边界

\B

非单词边界

\A

输入的开头

\G

上一个匹配的结尾

\Z

输入的结尾,仅用于最后的结束符(如果有的话)

\z

输入的结尾














Greedy 数量词

X?

X,一次或一次也没有

X*

X,零次或多次

X+

X,一次或多次

X{n}

X,恰好 n

X{n,}

X,至少 n

X{n,m}

X,至少 n 次,但是不超过 m












Reluctant 数量词

X??

X,一次或一次也没有

X*?

X,零次或多次

X+?

X,一次或多次

X{n}?

X,恰好 n

X{n,}?

X,至少 n

X{n,m}?

X,至少 n 次,但是不超过 m

Possessive 数量词

X?+

X,一次或一次也没有

X*+

X,零次或多次

X++

X,一次或多次

X{n}+

X,恰好 n

X{n,}+

X,至少 n

X{n,m}+

X,至少 n 次,但是不超过 m
















注意:

1、每个字符前边都需要加一个字符\;字符 .的写法为\\.;两个\字符的写法为\\\\。

2、组的概念:需要再次用到上一次的符号规则时用括号()括起来即可,即为封装成组;若出现叠词时规则为(.)\\1,叠词出现多次时规则为(.)\\1+;

组的应用:1、使字符串按照叠词完成切割。为了可以让规则的结果被重用。

    2、调用组的时候用符号$,后面在跟一个组号,如$2表示调用前面二号组。

    3、可以将规则封装成一个组。用()完成。组的出现都有编号。

组数从1开始。 想要使用已有的组可以通过 \n(n就是组的编号)的形式来获取。

3、((())())这个有几组,确定组数的时候就看左括号(有几个左括号就有几组),从左往右一次是第一组,第二组……

三、常用方法

1,匹配

Boolean matches(String regex)方法。用规则匹配整个字符串,符合则返回true,只要有一处不符合规则,就匹配结束,返回false。

其实String类中的matches和replaceAll方法。用的就是Pattern和Matcher对象来完成的。只不过被String的方法封装后,用起来较为简单。功能也单一。

匹配小练习:


运行结果 :

2,切割

String[]  split(String regex);

String[]  split(String regex,int limit)

切割小练习:


运行结果:


3,替换

String replaceAll(String regex,String replacement)   如果regex中有定义组,可以在第二参数中通过$n(n为组数)符号获取正则表达式中的已有的组。

替换小练习:


运行结果:


4,获取

将字符串中的符合规则的子串取出。

4.1、Pattern属于java.util.regex

用到的Pattern中的方法:

1、static Patterncompile(String regex)  将给定的正则表达式编译到模式中。

2、Matchermatcher(CharSequence input) 创建匹配给定输入与此模式的匹配器,返回类型是:匹配器操作的引擎

4.2、用到的matcher中的方法

1、Stringgroup();  获取符合规则的字符串序列。

2、boolean  find();判读是否有符合规则的字符序列。有则返回true,否则返回false。

3、int end(); 获取符合规则子串停止位置的角标。即:指针结束的位置

4、int start();获取符合规则子串开始位置的角标。即:指针开始的位置

4.3、获取子串操作步骤

1,将正则表达式封装成对象。

2,让正则对象和要操作的字符串相关联。

3,关联后,获取正则匹配引擎。

4,通过引擎对符合规则的子串进行操作,比如取出。

获取子串小练习:


运行结果:


5、4种方法的使用情况分析

       1,如果只想知道该字符是否对错,使用匹配。

       2,想要将已有的字符串变成另一个字符串,替换。

       3,想要按照自定的方式将字符串变成多个字符串。切割。获取规则以外的子串。

       4,想要拿到符合需求的字符串子串,获取。获取符合规则的子串。

正则表达式小练习:

练习1:


运行结果为 :

练习2:


运行结果为:


练习3:网页爬虫(蜘蛛)



------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

相关文章推荐

黑马程序员——高新技术---Java基础-常用类-正则表达式,Math类,Random类,System类,Date类

正则表达式: 字符类: 利用正则表达式验证字符串是否已h开头,以d结尾,而且中间只有一个字符,而且是原元音字母a,e,i,o,u? String str= "had"; Stringregex = "...

黑马程序员——java基础--正则表达式

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 正则表达式 一,简述 正则表达式:符合一定规则的表达式。       作...

黑马程序员——java基础:正则表达式

------- android培训、java培训、期待与您交流! ----------

黑马程序员——java基础之正则表达式

特点 正则表达式:符合一定规则的表达式。 作用:用于专门操作字符串。 特点:用于一些特定的符号来表示一些代码操作。这样就简化书写。 所以学习正则表达式,就是在学习一些特殊...

黑马程序员——Java基础---正则表达式

正则表达式 一、概述         1、 概念:符合一定规则的表达式。         2、 作用:用于专门操作字符串。         3、 特点:用于一些特定的符号来表示...

黑马程序员_Java基础篇(二)——正则表达式

黑马程序员_Java基础篇(二)——正则表达式 ------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 正则表达式:正确的规则,专门用于对字符串的操...

黑马程序员——Java基础--正则表达式

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 正则表达式 一、了解正则表达式用于操作字符串数据。 正则表达式用于操作字符串数据。...

黑马程序员——Java基础:反射、JDK1.5新特性、正则表达式

注:前面所有总结都是通过毕向东老师所讲的视频所得。反射部分由张孝祥老师所讲。 一、反射 反射 :是指程序在运行时能够获取自身的信息。在java中,只要给定类的名字,那么就可以通过反射机制来获得类...

黑马程序员——java基础知识之正则表达式

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——- 一、正则表达式基础 (1)、什么是正则表达式? 是一种强大而灵活的文本处理工具,在java的Unix工具...

黑马程序员——JAVA基础之正则表达式,网络爬虫

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------       正则表达式: 概念:用于操作字符串的符合一定规则的表达式 特点:用于一些特定的符号来...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马程序员——java基础---正则表达式
举报原因:
原因补充:

(最多只允许输入30个字)