日期:2014-05-20 浏览次数:20806 次
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] 非数字与英文字 * ^ 表示每行的开头 * $ 表示每行的结尾 */ }
------解决方案--------------------