浅谈java正则表达式(新手必看,易理解,通俗易懂)

来源:互联网 发布:阿玛尼没有入住淘宝吗 编辑:程序博客网 时间:2024/05/18 22:42

今天看了点书,小结一下,首先正则表达式(RegularExpressions)的用途主要有以下几个:

1.字符串匹配(字符匹配)

2.字符串查找

3.字符串替换

举几个小例子吧。

有时我们要检查我们自己填写的IP地址格式是否正确,这里我们就要用到正则表达式来设置这个格式。

有一个网页包含大量的数据,假如我们要将里面的所有email地址或者所有的手机号呀,链接呀等等。这些都要和设置的格式进行匹配。用正则表达式就可以解决设置问题了。

正则表达式涉及到的类有三个:java.lang.String、java.util.regex.Pattern、java.util.regex.matcher。

先看下String类吧。

public class Test {public static void main(String[] args) {//先简单认识正则表达式的概念System.out.println("abcd".matches("\\D\\D\\D\\D"));}}
上述代码打印结果为true;是不是很不可思议?其实\D表示的是非数字[^0-9]。相当4个字符'a' 'b' 'c' 'd'分别与四个\D逐个进行比较。所以就为true了。这就是字符匹配,这下理解了吧。

public class Test {public static void main(String[] args) {//把下面含有数字部分的字符串替换成别的东西System.out.println("4as76dd7d78".replaceAll("\\d", "A"));}}
打印结果为AasAAddAdAA;\d代表的是数字[0-9],这样替换是不是更方便了?不用一个字符一个字符地去替换。

现在看下pattern类,通过查看pattern类中的构造匹配表如下表:


这就是匹配表,这里我只是给了一小部分,具体建议还是自己去查一下API文档吧。

matcher和pattern混合使用效果如下:

public class Test {public static void main(String[] args) {//简单认识正则表达式//创建一个模式Pattern pattern = Pattern.compile("[a-z]{3}");Matcher m = pattern.matcher("asd");System.out.println(m.matches());System.out.println("asd".matches("[a-z]{3}"));//两个比较结果一样的,但是第一种方式较优}}
OK,现在有所了解了,我先弄点小练习给大伙们练练手,看看自己判断的结果和打印的结果一样不。

"a".matches(".");"aa".matches("aa");"aaaa".matches("a*");"aaa".matches("a+");"aaa".matches("a?");"a".matches("[abc]");"a".matches("[^abc]");"123-4567-80988-1234-00".matches("\\d{0,5}");"A".matches("[a-zA-Z]");"A".matches("[a-z]|[A-Z]");"A".matches("[a-z[A-Z]]");"R".matches("[A-Z&&[RFG]]");"".matches("a?");"a".matches("a?");"hello jiaxun".matches("^h.*");"hello jiaxun".matches("^h[a-z]{1,4}o\\b.*");"5425414321".matches("\\d{3,20}");"192.168.13.xxx".matches("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}");"123".matches("[0-2][0-5][1-4]");

结果自己去验证吧,有对有错的,嘿嘿~~
现在已经对正则算初识了,再熟悉下里面的方法就OK了。。。。


原创粉丝点击