2008-03-26
学习笔记:正则表达式之一
关键字: 正则表达式之一由于为了看到效果,这里使用一个公共的输出类只控制输出:
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("判断beyondqinghua@gmail.com是否是Eamil地址:");
println(pt.matcher("beyondqinghua@gmail.com").matches());
print("判断116203610beyond@gmail.com是否是Eamil地址:");
println(pt.matcher("116203610beyond@gmail.com").matches());
print("判断116203610_beyond-life@gmail.com是否是Eamil地址:");
println(pt.matcher("116203610_beyond-life@gmail.com").matches());
print("判断116203610*beyond-life@gmail.com是否是Eamil地址:");
println(pt.matcher("116203610*beyond-life@gmail.com").matches());
}
}
发表评论
- 浏览: 777 次
- 性别:

- 来自: 南昌

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
hibernate 使用复合主键的 ...
问题没解决,反倒放进了新手贴,寒心!
-- by beyondqinghua -
hibernate 使用复合主键的 ...
我的意思是大家怎么处理复合主键,因为对Hibernate在企业中的应用不熟悉,大 ...
-- by beyondqinghua -
hibernate 使用复合主键的 ...
tangdaibing 写道不知道楼主要问的问题是什么,没有搞清楚楼主的意思 ...
-- by wxb_love -
hibernate 使用复合主键的 ...
不知道楼主要问的问题是什么,没有搞清楚楼主的意思
-- by tangdaibing -
hibernate lazy的问题学习 ...
这段时间又碰到了问题,发现还是没有效果,对lazy和fetch的作用认识还不够. ...
-- by beyondqinghua






评论排行榜