您的位置:首页 > 职场人生

黑马程序员_正则表达式学习总结

2014-07-23 03:35 344 查看
------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流!
----------

正则表达式学习总结

熟练的使用正则表达式是程序猿的一项基本功。正则表达式在操作字符串时是相当便捷的。

正则表达式:正则表达式就是用来描述符合一定规则的字符串,用于对字符串就行操作。

正则表达式如何来描述符合一定规则的字符串?

表示某个字符位的字符

[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]

当我们要表示某个字符出现几次时可以用下列表达式

数量词

X? X,一次或一次也没有

X* X,零次或多次

X+ X,一次或多次

X{n} X,恰好 n 次

X{n,} X,至少 n 次

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

当我们要表示一个单词。就要涉及单词的开头与结尾的表达,这就可以用下列的边界匹配器

$ 行的结尾

\b 单词边界

\B 非单词边界

\A 输入的开头

\G 上一个匹配的结尾

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

\z 输入的结尾

正则表达式中的组及组的引用。

在正则表达式中可以将一个字符位或多个字符位的正则表达式用()扩起来封装成一组。

如何引用组:在同个正则表达式中即在同一个“”中用\n的形式引用前面的组。n为整数。表示该组的组号。组号从一开始。在两个正则表达式中,后一个正则表达式引用前一个正则表达式时。即在不同的“”中的正则表达式。可以用$n的形式引用。n表示组号。常用于字符串的替换操作。

用正则表达式对字符创进行操作。

正则表达式对字符串的操作方式有四种。

一:匹配 通过String 的 matches(String regex)方法。判断字符串是否符合某种正则表达式表达的规则。

常用实例。手机号校验。用下面代码演示



可以看出使用正则表达式是非常便捷的,要是向以前用字符串的一些方法去完成,那实在是太痛苦。

二:切割 根据String的 String[] spilt(String regex)方法将字符串以正则表达式表示的规则进行切割。

举例说明:将字符串“hdvhjghhhdhohsjjbhiffqnjjjhxisahxik”以叠词切割开。

用以下代码演示



三:替换 根据字符串的replaceAll(String regex, String replacement) 将字符串中符合正则表达式表示的规则的字串用指定表达式替换。

举例演示下。将字符串中的连续出现五个或以上的数字内容替换成该串数字的第一个数字

用下面代码演示:



四:获取

利用正则表达式获取字符串中的字串步骤如下。

1.将正则表达式封装成对象。可以用正则表达式对象

Pattern 的 static Pattern compile(String regex)

将给定的正则表达式编译到模式中。

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

2.让正则表达式与要操作的字符串相关联。

3.关联后获取一个正则匹配器。

通过Pattern 的Matcher matcher(CharSequence input) 方法获取一个正则匹配器。

通过匹配器对符合规则的字符串进行操作。比如取出。

利用匹配器Matcher 的find()方法去从字符串的第一个字符开始去根据正则去匹配字符串。

用group方法去获取匹配器上一次匹配获得的结果。

举例演示 获取一个字符串中的邮箱地址。



-------<a
href="http://www.itheima.com/"">android培训</a>、<a
href="http://www.itheima.com/" ">java培训</a>期待与您交流!----------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: