---------------------- <a href="http://edu.csdn.net/heima" target="blank">android培训</a>、<a href="http://edu.csdn.net/heima" 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]
边界匹配器
^ 行的开头
$ 行的结尾
\b 单词边界
\B 非单词边界
\A 输入的开头
Greedy 数量词
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
三、正则表达式的常见方法
1.匹配
其实使用的就是String里的mathes方法。
\d 要用\\d表示
2.切割
split()方法
String str="zhang.li.sun.liu";
String[]names =str.split("\\.");
\\因为.在正则表达式有自己的意义,通配符。(.)表示组 不加()表是第0组 没意义。
String str1="zhangsanttttlisimmmmsunwu";
String[]names1=str1.split("(.)\\1+");
\\组:((A)(B(C)))为4组 数有几个左(
3.常见的功能替换:
replaceAll方法。
String str="zhangsanttttlisimmmmsunwu";
str=str.replaceAll("(.)\\1+","#");//把叠词转成#
str=str.replaceAll("(.)\\1+","$1");//把叠词该为1个
String te1="15800001111"转成158****1111
te1=te1.replaceAll("(\\d{3})\\d{4}(\\d{4})",
"$1****$2");
4.获取只能用匹配器
Pattern类不能被实例化。
Pattern类把正则表达式封装成对象。
Pattern p=Pattern.compile("a*b");
通过正则对象的mather方法字去符串关联,获取要对字符
操作的匹配器对象Matcher。
Matcher m=p.matcher("aaaaab");
通过Matcher匹配器对象的方法对字符串进行操作。
booean b=m.matches();
Matcher里的方法:
查找 find方法 就是那正则表达式去字符串匹配,找整个字符串,找到true。
group方法获取匹配的子序列,得先查找后才获取。
例:
Pattern p=Pattern.compile("\\b[a-z]{2}\\b");
//a*d就是a到d之间可以出0个或者多个a
Matcher m=p.matcher("da jia hao,ming tian bu fang jia");
// System.out.println(m.matches());
while( m.find()){
System.out.println(m.group()+" "+m.start()+":"+m.end());
}
//结果是:da 0:2
// bu 21:23
----- <a href="http://edu.csdn.net/heima" target="blank">android培训</a>、<a href="http://edu.csdn.net/heima" target="blank">java培训</a>、期待与您交流! ----------------------
详细请查看:<a href="http://edu.csdn.net/heima" target="blank">http://edu.csdn.net/heima</a>