- packagepack.java.regexp;
- importjava.util.regex.Matcher;
- importjava.util.regex.Pattern;
- /**
- *正则表达式实例1
- *@authorAdministrator
- *
- */
- publicclassRegexpDemo01{
- publicstaticvoidmain(String[]args){
- //正则常用表达式介绍;
- //符号:.代表任意字符;
- //符号:*代表0个或者多个
- //符号:+代表1个或者多个
- //符号:?代表0个或者1个
- //符号:/d代表数字0-9
- //符号:/D代表非数字0-9的字符;
- //符号:/w代表字符a-z或者字符A-Z或者下划线_或者数字0-9,如[a-zA-Z_0-9]
- //符号:/W代表非[a-zA-Z_0-9]的字符;
- //符号:/s代表空白字符如:\n、\t、\r或者空白等;
- //符号:/S代表非空白字符的字符;
- //符号:\代表转义\如果需要写正则表达式匹配\必须写\\匹配.
- //符号:^如果位于中括号里面是取反,如果^位于中括号外面代表字符输入的开头;
- //符号:$代表字符结束的末尾;
- //符号:/b代表单词边界,如iam或者i\tam等;
- //表达式中的.代表匹配任意字符,返回结果true;
- p("@1A中".matches("...."));
- //每次匹配一个长度,并且是数字0-9,或者使用\d也行;
- p("abcd123abc".replaceAll("[0-9]{1}","-"));
- //当字符串只有3个长度时才匹配成功;
- Patterncompile=Pattern.compile("\\w{3}");
- p(compile.matcher("aA1").matches());
- //正则表达式*代表0个或者多个,返回结果true;
- p("aA1bc".matches("\\w*"));
- //正则表达式+号代表1个或者多个,返回结果true;
- p("AVB123a".matches("\\w+"));
- //正则表达式?号代表0个或者1个,返回结果true;
- p("".matches("\\w?"));
- //正则表达式{3}代表字符串需要连续出现多少次,返回结果true;
- p("aaa".matches("a{3}"));
- //正则表达式{3,}代表至少出现3次最多未知,结果返回true;
- p("123456".matches("\\d{3,}"));
- //正则表达式区间{3,100}匹配,代表至少3次不超过100次,结果返回true;
- p("张AB/3&*".matches(".{3,100}"));
- //正则表达式[0-9]代表一个范围匹配,结果返回true;
- p("192".matches("[0-2][0-9][0-9]"));
- //范围匹配规则如下:
- //正则表达式[abc]代表只需要匹配此[]中的任意一个字符(只匹配单个字符).返回true;
- p("a".matches("[abc]"));
- //正则表达式取反[^abc]代表除了表达式的字符都可以匹配,返回true
- p("d".matches("[^abc]"));
- //正则表达式-代表一个范围,[a-zA-Z]代表范围,a到z和A-Z;返回true;
- p("abc".matches("[a-zA-Z]{3}"));
- //正则表达式|代表或者,如:[a-z]|[A-Z]表示小写字符a-z或者大写字母A-Z;
- p("abez".matches("([a-z]|[A-Z]){4,}"));
- //正则表达式并集&&表示并且的意思,例如:[A-Z&&[ABC]],代表需要匹配A-Z中的一个字母并且和[ABC]中的一个匹配,只有2个表达式都成立时才返回true;
- p("A".matches("[A-Z&&[ABC]]"));
- //匹配空白字符以及制表符、回车符、换行等,使用\s即可,返回true;
- p("\n\r\t".matches("\\s+"));
- //匹配下划线字母数字,使用\w即可,返回true;
- p("a_z_2333aABD".matches("\\w{1,}"));
- //匹配数字、字母、以及多个符号&^%#等;
- p("abc3ABC$^&".matches("\\w{1,7}[%$&^]+"));
- //匹配\\需要转义\\\\进行匹配,返回true
- p("\\".matches("\\\\"));
- //边界匹配规则如下:
- //正则表达式需要从字符起始位置开始找起需要^并且匹配中间任意字符.和以llo字符结尾的字符,返回true;
- p("hellozhangsan".matches("^h.*san$"));
- //匹配以abc结尾的字符,返回true
- p("hellozhangabc".matches(".*abc$"));
- //匹配空行;
- p("\n".matches("^[\\s&&[^\\n]]*\\n$"));
- //单词边界规则如下;
- //匹配单词,可以使用\b代表有单词边界的地方开始匹配或者是\t代表空格.
- p("Yessir.".matches("[a-z]*\\b.{1,}"));
- p("Yes\tsir.".matches("[a-z]*\\b.{1,}"));
- //matchesfindlookingat区别
- //正则表达式中的matcher表示匹配整个字符串;
- Patterncomp1=Pattern.compile("\\d{3,5}");
- Matchermatcher=comp1.matcher("111-430-13331-234-13");
- p(matcher.matches());
- //重置表示重新从最初的位置开始找起;
- matcher.reset();
- //find表示每次匹配一次就移除匹配的部分,保留子字符串,然后返回匹配项返回true;
- p(matcher.find());
- p(matcher.start()+"-"+matcher.end());
- p(matcher.find());
- p(matcher.start()+"-"+matcher.end());
- p(matcher.find());
- p(matcher.start()+"-"+matcher.end());
- p(matcher.find());
- matcher.reset();
- //lookingAt表示每次从最开始的位置开始找;
- p(matcher.lookingAt());
- //较复杂的查找和替换操作;
- Patterncomp2=Pattern.compile("java",Pattern.CASE_INSENSITIVE);//忽略大小写;
- Matchermatcher2=comp2.matcher("Java.NetJAVAJavAJavajavaJAVADemoJaVaDDILoveYouJAvatestabcd123.");
- inti=0;
- StringBuffersb=newStringBuffer();
- while(matcher2.find()){
- i++;
- //如果是偶数java转成大写,否则转成小写;
- if(i%2==0){
- matcher2.appendReplacement(sb,"JAVA");
- }else{
- matcher2.appendReplacement(sb,"java");
- }
- }
- //重新追加没有匹配的字符串;
- matcher2.appendTail(sb);
- p(sb);
- //分组匹配输出;如果正则表达式中的"()"代表一组表达式,如果有多组就使用多个()括起来,使用group(1)表示取第一组表达式的值;
- Patterncomp3=Pattern.compile("(\\d{3,5})([a-z]{1,3})",Pattern.CASE_INSENSITIVE);
- Matchermatcher3=comp3.matcher("123a-234abc-33452SBD-32BS-311XYZ");
- while(matcher3.find()){
- p(matcher3.group(1));//表示按(\\d{3,5})第一组的正则表达式进行匹配.
- }
- }
- /**
- *输出正则表达式匹配后的结果;
- *@paramobj
- */
- publicstaticvoidp(Objectobj){
- System.out.println(obj);
- }
- }
Java正则表达式
最新推荐文章于 2022-04-05 19:42:12 发布