学习笔记:正则表达式之一

由于为了看到效果,这里使用一个公共的输出类只控制输出:

package test;

public class Print{
	
	public static void println(Object o){
		
		System.out.println(o);
	}
	
	public static void print(Object o){
		
		System.out.print(o);
	}
}
package test;

import java.util.regex.Pattern;
import java.util.regex.Matcher;
import static test.Print.*;

/*
 *认识正则表达式的概念
 *用途:
 *1、字符串匹配;
 *2、字符串查找;
 *3、字符串替换。
 */
public class Test{
	
	public static void main(String[] args){
		
		println("abc".matches("..."));
		println("abc9796fa56j".replaceAll("\\d","_")); //把所有数字替换成下划线
		
		Pattern ptn = Pattern.compile("[a-z]{3}");  //匹配任意三个连续的英文字符
		Matcher mt = ptn.matcher("bey");
		println(mt.matches());
		
		//上面的三句话可以用一句来表达
		println("bey".matches("[a-z]{3}"));
		
		
	}
}
package test;

import java.util.regex.*;
import static test.Print.*;

/*
 * 预定义字符类 
 * \\\\表示\斜杠
 * . 任何字符(与行结束符可能匹配也可能不匹配) 
 * \d 数字:[0-9] 
 * \D 非数字: [^0-9] 
 * \s 空白字符:[\t\n\x0B\f\r] 
 * \S 非空白字符:[^\s]
 * \w 单词字符:[a-zA-Z_0-9] 
 * \W 非单词字符:[^\w] 
 * 注意:\s匹配\r,\n,\r,\f和空格
 */
public class Demo1{
	
	
	public static void main(String[] args){
		
		//判断斜杠
		println("0:" + "\\".matches("\\\\"));
		
		//判断任意字符
		println("1:" + "a".matches("."));   //返回true
		
		//判断数字字符
		println("2:" + "8".matches("\\d"));  //判断是否是数字,返回true
		println("3:" + "89".matches("\\d")); //只能用于判断一个数字,返回false
		println("4:" + "7".matches("\\D"));  //由于7是数字字符,所以返回false
		println("5:" + "&".matches("\\D"));  //返回true
		
		//空白字符
		println("6:" + " ".matches("\\s"));   //返回true
		println("7:" + "7".matches("\\s"));   //返回false
		println("8:" + " ".matches("\\S"));   //返回false
		
		//单词字符
		println("9:" + "+".matches("\\w"));   //返回false
		println("10:" + "7".matches("\\w"));   //返回true
		println("11:" + "_".matches("\\W"));   //返回false
		println("12:" + "b".matches("\\w"));   //返回true
		
		//特殊字符
		println("13:" + "\n".matches("\\s"));  //返回true
				
	}
	
	
}
 
package test;

import java.util.regex.*;
import static test.Print.*;

/*
 * Greedy 数量词
 * X? X,一次或一次也没有 
 * X* X,零次或多次 
 * X+ X,一次或多次 
 * X{n} X,恰好 n 次 
 * X{n,} X,至少 n 次 
 * X{n,m} X,至少 n 次,但是不超过 m 次 
 *
 */
public class Demo2{
	
	public static void main(String[] args){
		
		println("1: " + "ab".matches("ab"));  //精确匹配
		
		println("2: " + "a".matches("a?"));   //a可以出现一次,也可以没有
		println("3: " + "b".matches("a?"));
		
		
		println("4: " + "".matches("a*"));   //a可以出现零次或多次
		println("5: " + "aa".matches("a*"));
		
		println("6: " + "".matches("a+"));   //a必须出现一次或多次
		println("7: " + "aaa".matches("a+"));
		
		println("8: " + "a".matches("a{3}"));   //a必须出现恰好n次
		println("9: " + "aaa".matches("a{3}"));

		println("10: " + "a".matches("a{3,7}"));   //a必须出现最少n次,最多m次
		println("11: " + "aaaa".matches("a{3,7}"));
		
		//下面是自我提高练习
		println("基本判断一个ip:");
		print("判断192.168.10.8是不是ip地址:");
		println("192.168.10.8".matches("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}"));
		print("判断192.168.baby.8是不是ip地址:");
		println("192.168.baby.8".matches("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}"));
		
		//上面的也可以使用Pattern来判断
		println("使用Pattern来实现");
		Pattern pt = Pattern.compile("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}");
		print("判断192.168.10.8是不是ip地址:");
		println(pt.matcher("192.168.10.8").matches());
		
		//判断EMAIL地址
		println("EMAIL判断");
		pt = Pattern.compile("[a-zA-Z0-9|_|-]{3,}@[a-zA-Z0-9]{3,}\\.[a-zA-Z0-9]{2,}");
		print("判断[email protected]是否是Eamil地址:");
		println(pt.matcher("[email protected]").matches());
		
		print("判断[email protected]是否是Eamil地址:");
		println(pt.matcher("[email protected]").matches());
		
		print("判断[email protected]是否是Eamil地址:");
		println(pt.matcher("[email protected]").matches());
		
		print("判断116203610*[email protected]是否是Eamil地址:");
		println(pt.matcher("116203610*[email protected]").matches());
	}
}
 
发布了19 篇原创文章 · 获赞 2 · 访问量 3130

猜你喜欢

转载自blog.csdn.net/beyondqinghua/article/details/83225130