JAVA正则表达式基础入门
来源:互联网 发布:姜超点评9月经济数据 编辑:程序博客网 时间:2024/06/01 09:54
/* * 这个类主要是为了解决正则表达式基础入门 */public class Test {public static void main(String[] args) {//.代表任意的一个字符(与行结束符可能匹配也可能不匹配)p("abc".matches("..."));//将数字替换为“-”,\d表示一个数字p("a8729a".replaceAll("\\d", "-"));//取值范围为a到z之间的所有字符,长度只有3Pattern p = Pattern.compile("[a-z]{3}");Matcher m = p.matcher("fgh");p(m.matches());//上面三句代码和下面一句代码意思是一致的p("fgha".matches("[a-z]{3}"));/*//初步认识. * + ?//.代表任意的一个字符p("a".matches("."));p("aa".matches("aa"));//*代表0个或者是多个,前面必须有字符,不能单独使用,“a*”表示0个或者多个ap("aaaa".matches("a*"));//+代表1个或者是多个,前面必须有字符,不能单独使用,“a+”表示1个或者多个ap("aaaa".matches("a+"));p("".matches("a*"));//true//?表示0个或者是1个,前面必须有字符,不能单独使用,“a?”表示0个或是1个ap("aaaa".matches("a?"));//falsep("".matches("a?"));p("a".matches("a?"));//\d{3,100}表示至少有3个数字,至多有100个数字,{}表示匹配的字符的数量p("214523145234532".matches("\\d{3,100}"));p("192.168.0.aaa".matches("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}"));//[0-2][0-9][0-9]匹配第一个数字范围在0到2之间,第二个在0到9之间,第三个在0到9之间p("192".matches("[0-2][0-9][0-9]"));*//*//[]表示范围p("a".matches("[abc]"));//^表示除开[]里面以外的字符//[^abc]表示abc以外的字符p("a".matches("[^abc]"));//下面三个都是a-z和A-Z,取两者的并集,只是三种不同的写法p("A".matches("[a-zA-Z]"));p("A".matches("[a-z]|[A-Z]"));p("A".matches("[a-z[A-Z]]"));//范围是A到Z并且是RFG,也就是说的取交集p("R".matches("[A-Z&&[RFG]]"));*/ //认识\s \w \d \/* * \s表示空白字符 * \w表示单词字符 * \d表示数字 * 上面的字母大写就表示小写的取反*//*p(" \n\r\t".matches("\\s{4}"));p(" ".matches("\\S"));p("a_8".matches("\\w{3}"));p("abc888&^%".matches("[a-z]{1,3}\\d+[&^#%]+"));p("\\".matches("\\\\"));*///边界匹配/*//^表示行的开头,"^he.*"表示是以he开头,而不仅仅是针对h开头p("hello sir".matches("^he.*"));p("hillo sir".matches("^he.*"));//$行的结尾,".*ir$"表示是以ir结尾,而不仅仅是针对r结尾p("hello sdr".matches(".*ir$"));p("hello sir".matches(".*ir$"));//\b表示的是单词边界,\B表示的是非单词边界p("hello sir".matches("^h[a-z]{1,3}o\\b.*"));p("hellosir".matches("^h[a-z]{1,3}o\\b.*"));p("hellosir".matches("^h[a-z]{1,3}o\\B.*"));//whilte linesp(" \n".matches("^[\\s&&[^\\n]]*\\n$"));p("aaa 8888c".matches(".*\\d{4}."));p("aaa 8888c".matches(".*\\b\\d{4}."));p("aaa8888c".matches(".*\\d{4}."));p("aaa8888c".matches(".*\\b\\d{4}."));*///email//p("asdfasdfsafsf@dsdfsdf.com".matches("[\\w[.-]]+@[\\w[.-]]+\\.[\\w]+"));/*//matches()方法和find()方法相互影像 Pattern p = Pattern.compile("\\d{3,5}");String s = "123-34345-234-00";Matcher m = p.matcher(s);//matches()方法会匹配所有的字符串,和\d{3,5}表达式去匹配,明显是不符合的p(m.matches());//false//如果不使用reset()方法,则匹配的字符串从34345-234-00开始,因为之前的123-被前面的matches()方法匹配了m.reset();//find()方法找子字符串,在这里必须先使用,不然后面的start()和end()方法不能正常使用p(m.find());p(m.start() + "-" + m.end());p(m.find());p(m.start() + "-" + m.end());p(m.find());p(m.start() + "-" + m.end());p(m.find());//如果没有使用上面的reset()方法,则使用下面的语句会抛异常//p(m.start() + "-" + m.end());//lookingAt()尝试将从区域开头开始的输入序列与该模式匹配。因此下面的四个输出总是truep(m.lookingAt());p(m.lookingAt());p(m.lookingAt());p(m.lookingAt());*/ //replacement//Pattern.CASE_INSENSITIVE表示匹配不区分大小写,将偶数java全部设为大写/*Pattern p = Pattern.compile("java", Pattern.CASE_INSENSITIVE);Matcher m = p.matcher("java Java JAVa JaVa IloveJAVA you hateJava afasdfasdf");StringBuffer buf = new StringBuffer();int i=0;while(m.find()) {i++;if(i%2 == 0) {m.appendReplacement(buf, "java");} else {m.appendReplacement(buf, "JAVA");}}m.appendTail(buf);p(buf);*///group//(\\d{3,5})([a-z]{2})表达式分了三组,第一组是整体匹配,为第0组,(\\d{3,5})为第1组,([a-z]{2})为第二组/*Pattern p = Pattern.compile("(\\d{3,5})([a-z]{2})");String s = "123aa-34345bb-234cc-00";Matcher m = p.matcher(s);//这里只有使用了find()方法,才能使用group()方法,不然会抛异常while(m.find()) {p(m.group());}System.out.println("找出只满足上面正则表达式其中一部分的情况——分组");System.out.println("匹配(\\d{3,5})");m.reset();while(m.find()) {//显示的是第一个括号的分组p(m.group(1));}System.out.println("匹配([a-z]{2})");m.reset();while(m.find()) {//显示的是第一个括号的分组p(m.group(2));}*///qulifiers/* * (.{3,10}?)表示的是Reluctant(不情愿的)匹配模式,会从最少的去匹配,即3个开始,如果不匹配会逐步增加匹配数量 * (.{3,10}+)表示的是Possessive(独占的)匹配模式,会直接匹配最大的数量,即10个,但是不会往少了去匹配,这种方式效率比较高 * 如果s = "aaaa5bbbb65"这样就能和+独占匹配方式匹配了 * (.{3,10})表示的是greedy(贪婪的)匹配模式,会直接匹配最大的数量,如果不匹配,会自动的往数量小的地方去匹配 *//*Pattern p = Pattern.compile("(.{3,10}+)[0-9]");//Pattern p = Pattern.compile("(.{3,10}?)[0-9]");//Pattern p = Pattern.compile("(.{3,10})[0-9]");String s = "aaaa5bbbb6";Matcher m = p.matcher(s);if(m.find()){p(m.group());p(m.start() + "-" + m.end());}else p("not match!");*///non-capturing groups/*//表示最后一个字符为a,且a不被捕获Pattern p = Pattern.compile(".{3}(?=a)");String s = "444a66b";Matcher m = p.matcher(s);while(m.find()) {p(m.group());}*/}public static void p(Object o) {System.out.println(o);}}
- JAVA正则表达式基础入门
- java正则表达式入门基础
- java正则表达式入门基础
- 【Java基础】Java正则表达式入门
- Java正则表达式入门基础篇
- Java--正则表达式基础入门(一)
- Java--正则表达式基础入门(二)
- Java--正则表达式基础入门(三)
- Java--正则表达式基础入门(四)
- 正则表达式入门基础
- 正则表达式基础入门
- 深入入门正则表达式(java) - 1 - 入门基础
- 深入入门正则表达式(java) - 1 - 入门基础
- java正则表达式入门
- Java正则表达式入门
- Java正则表达式入门
- java正则表达式入门
- JAVA正则表达式入门
- Oracle表空间(tablespaces)(键人岐)
- jquery中contains和has的区别
- android handler学习笔记
- 过滤特殊字符
- JavaScript正则表达式入门
- JAVA正则表达式基础入门
- 项目例会有感
- bat文件 判断服务是否存在的方法
- 2012本命年独闯北京
- js 设置在iframe框架中指定div不显示
- 用div+css布局网页框架
- android开发小知识点
- 原来的博客地
- 关于JS原型对象的创建