日期:2014-05-20 浏览次数:20960 次
import java.util.Arrays;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegTest {
/**
* JAVA正则表达式常用的方法
* @param args
*/
public static void main(String args[]){
/**
* 一、查询匹配
*
*/
String str1="abc efg ABC";
String regEx1="a|f"; //表示a或f
Pattern p1=Pattern.compile(regEx1);
Matcher m1=p1.matcher(str1);
/*
* 如果str中有regEx,那么rs为true,否则为flase。
* 如果想在查找时忽略大小写,
* 则可以写成Pattern p=Pattern.compile(regEx,Pattern.CASE_INSENSITIVE);
*/
boolean rs1=m1.find();
System.out.println(rs1);
//匹配是否有汉字
String str0="AaBbCc139汉字";
String regex0="[\u4e00-\u9fa5]";
Pattern p0=Pattern.compile(regex0);
Matcher m0=p0.matcher(str0);
boolean rs0=m0.find();
System.out.println(rs0);
/**
* 二、提取
*
*/
String regEx2=".+\\\\(.+)$";
String str2="c:\\dir1\\dir2\\name.txt";
Pattern p2=Pattern.compile(regEx2);
Matcher m2=p2.matcher(str2);
boolean rs2=m2.find();
for(int i=1;i<=m2.groupCount();i++){
System.out.println(m2.group(i));
}
/*
* 以上的执行结果为name.txt,
* 提取的字符串储存在m.group(i)中,
* 其中i最大值为m.groupCount();
*/
/**
* 三、分割
*
*/
String regEx3="::";
Pattern p3=Pattern.compile(regEx3);
String[] r3=p3.split("xd::abc::cde");
System.out.println(Arrays.toString(r3));
//执行后,r就是{"xd","abc","cde"}
/*
* 其实分割时还有更简单的方法:
* String str="xd::abc::cde";
* String[] r=str.split("::");
*/
/**
* 四、替换(删除)
*
*/
String regEx4="a+"; //表示一个或多个a
Pattern p4=Pattern.compile(regEx4);
Matcher m4=p4.matcher("aaabbced a ccdeaa");
String s4=m4.replaceAll("A");
System.out.println(s4.toString());
//结果为"Abbced A ccdeA"
/*
* 如果写成空串,既可达到删除的功能,
* 比如:String s=m.replaceAll("");
* 结果为"bbced ccde"
*/
}
/**
* 附:
* \d 等於 [0-9] 数字
* \D 等於 [^0-9] 非数字
* \s 等於 [ \t\n\x0B\f\r] 空白字元
* \S 等於 [^ \t\n\x0B\f\r] 非空白字元
* \w 等於 [a-zA-Z_0-9] 数字或是英文字
* \W 等於 [^a-zA-Z_0-9] 非数字与英文字
* ^ 表示每行的开头
* $ 表示每行的结尾
*/
}
------解决方案--------------------