字符串处理利器:正则表达式
正则表达式:具有特殊意义的字符串,我们说某个字符串匹配某个正则表达式,通常是指这个字符串里有一部分(或几部分分别)能满足表达式给出的条件。
(本文不介绍各种符号代表的意思以及各函数,只是希望能够帮助初学者理解正则表达式的作用和用法)
1.正则表达式用途:
字符匹配(例如:IP地址是否正确),
字符串查找(例如:从网页中寻找email地址),
字符串替换(例如:将小写的字母替换为大写的字母)
字符提取,字符分割等。
2.初识正则表达式的世界——字符串中的正则表达式:
public boolean matches(String regex)方法:
作用:目标字符串的形式是否完全满足regex的字符序列
例如:System.out.println("abc".matches("...")
这里“...”代表的是三个任意字符,a是第一个任意字符,b,c分别是第2,3个任意字符,因此输出true
还有字符串替换public String replaceAll(String regex,String replacement)方法
以及字符串分解public String[] split(String regex)方法等
3.模式匹配Pattern类和Matcher类
Pattern:要符合的模式
Matcher:按照该模式匹配字符串之后产生的结果
使用步骤:
1)建立需要符合的模式
将正则表达式作为参数得到一个实例,
通常先编译好了,这样使用的时候不用每次都编译,会快一些
例如:Pattern p=Pattern.compile("...");//将三个任意字符当作要来进行比较的模式,这个模式就是p
2)得到按照该模式匹配字符串之后产生的结果
例如:Matcher m=p.matcher("sdf");//将字符串"sdf"与模式p进行匹配,将结果存储为m
3)使用
例如:System.out.println(m.matches());//同上,"sdf"满足"...",应输出true
例如:
Pattern pt=Pattern.compile("java",Pattern.CASE_INSENSITIVE);//将不区分大小写的"java"字符串作为目标模式pt
Matcher m=pt.matcher("java Java JAva ILoveJava fdaf");//将双引号中的字符串与pt模式代表的字符串匹配,结果存到m
System.out.println(m.replaceAll("Java"));//上面的四个不分大小写的“java”都满足匹配条件,将他们都替换为"Java"
剩下的一些好用的方法都没有介绍,书籍里和API都有,
写这个的原因是因为我一开始就没有理解到底该怎么用正则表达式,甚至什么是正则表达式
希望能够帮助到大家