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

今天看了点书,小结一下,首先正则表达式(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类中的构造匹配表如下表:

浅谈java正则表达式(新手必看,易理解,通俗易懂)_第1张图片

这就是匹配表,这里我只是给了一小部分,具体建议还是自己去查一下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了。。。。


你可能感兴趣的:(浅谈java正则表达式(新手必看,易理解,通俗易懂))