正则表达式是拿来干嘛的?
它是验证字符串,操作字符串的一个非常简单的工具。它是一个简化操作的工具,如果能熟练使用它,那么你写的代码将会大大减少!高手必备啊。
如何使用正则表达式?
1.定义验证规则
2.实例化Pattern类//或者可以直接使用String类的方法不用实例化Pattern
3.实例化Matcher类
4.操作。
练习一:编写一个程序,检测用户输入的是否是一个邮箱。
/*
验证规则:^表示开头,开头的http:\\和www.可有可无,所以要加?
后跟(字母数字下划线)一个以上所以用\\w+
然后是@(必须有)和后缀修饰(有很多,一般2个小写字母以上)所以用[a-z]{2,}
结尾标志$
总结为:^[http:\\]?[www.]?\\w+@\\w+\\.[a-z]{2,}$
*/
import java.util.regex.Pattern;
import java.util.regex.Matcher;
class TestEmailDemo{
public static void main(String args[]){
String ts1 = "755293352@qq.com"; //测试字符串1
String ts2 = "yahoo.com"; /测试字符串2
String pat = "^[http:\\]?[www.]?\\w+@\\w+\\.[a-z]{2,}$"; //定义验证规则
Pattern p = Pattern.compile(pat); //实例化Pattern类
Matcher m1 = p.matcher(ts1); //实例化Matcher类
Matcher m2 = p.matcher(ts2); //实例化Matcher类
if(m1.matches()){ //使用正则验算
System.out.println("字符串:"+ts1+"是一个邮箱地址。");
}else{
System.out.println("字符串:"+ts1+"不是一个邮箱地址。");
}
if(m2.matches()){ //使用正则验算
System.out.println("字符串:"+ts2+"是一个邮箱地址。");
}else{
System.out.println("字符串:"+ts2+"不是一个邮箱地址。");
}
}
}
<pre name="code" class="java">/*
输出结果:
字符串:755293352@qq.com是一个邮箱地址。
字符串:yahoo.com不是一个邮箱地址。
*/
关于正则使用的关键:
个人认为,正则使用的关键在于对验证规则的定义,掌握了定义验证规则,那么对于正则的使用,也就开始登堂入室了。后面的对匹配到的字符的操作,其实都是差不多系统化的操作了,都是比较简单。
那么问题来了!如何定义验证规则?
1.观测得出你想要匹配的字符串的规律是什么。
例如,你想匹配验证一个简单的ip那么ip有什么规律呢?是xxx.xxx.x.xxx(四个数字三个.\\\\其中一般来说第一个数字都是3位的且以1开头,其他是1-3位。)那么我们就可以得到验证规则:“1[0-9]{2}\.([0-9]{1,3}\.){2}[0-9]{1,3}”
下面解析一下这个验证规则:{2}表示有两个,\.表示小数点.([0-9]{3}\.)里的[0-9]{0,3}\.就是三个数字加一个点如555. {2}表示有2个这样的字符,然后有3个数字。整体就可以匹配155.555.555.555,或155.5.5.5这样的ip;
2.利用正则里的语法,把你所观察到的规则表达出来!
下面是java中正则中的一些定义验证规则的语法(必须要看的懂理解懂)
【引用自java开发实战经典(名师讲坛)张兴华】
还有更多的有关知识,我暂时不能一一的列举出来。。希望各位能稍稍自己找一找。
正则表达式,看起来很简单。。可是你去百度一下,,你会发现居然会有专门介绍正则的书籍!!!!
所以,好好学习吧,每个知识,想达到高深的境界,需要付出很多的努力哦!
如果你觉得这些东西激发了你对正则表达式的兴趣,那么我会很高兴的啦~~~~
不过明显这里的知识并不足已让你学到更深入的知识,可以自行去学习更多关于它的知识哦~
这里有一个比较好的有很多规范实例
http://www.cnblogs.com/elleniou/archive/2012/07/31/2617312.html
你也可以去看看的哦~