您的位置:首页 > 科技 > 能源 > Java正则表达式和枚举(Enum)

Java正则表达式和枚举(Enum)

2024/11/16 13:24:03 来源:https://blog.csdn.net/ABU009/article/details/141428453  浏览:    关键词:Java正则表达式和枚举(Enum)
正则表达式:

涉及的正则表达式符号过多,以下只列出常用的一些正则表达式符号以及用法:

  •    [  ]:括号里面代表任意的,如果是个范围,比如0-9,[ 0-9]就代表所有的数字
  •     \d == [0-9] 代表的是数字
  •     \D == [^0-9]代表的是非数字
  •     \s == 空白字符(空格,tab键)
  •     \w == [a-zA-Z0-9_]
  •     \W == [^a-zA-Z0-9]
  •       .  == 任意字符
  •      ?:出现了0次或者1次
  •      +:代表出现了1次或者多次
  •      *:代表出现了任意次
  •       {n}:刚好 n次 
  •       {n,}:至少n次
  •      {n,m}:至少n次,至多m次

部分使用代码如下:

public class RegularDemo4 {public static void main(String[] args) {String str = "shujia小帅哥魏一民";String regular = "魏一民$";System.out.println(str.replaceAll(regular, "_"));/*** ?:出现了0次或者1次* +:代表出现了1次或者多次* *:代表出现了任意次*/String str = "caaaaaabaaacdeaaaafg";String regular = "^a?";String regular = "^a+";String regular = "^a*";System.out.println(str.replaceAll(regular, "_"));String str = "cccaaaaaabcaaacdecaaaaaaaaaafg";String regular = "c{3}a{3}"; // cccaaaString regular = "ca{4,6}"; // caaaa caaaaaaString regular = "ca{4,}";System.out.println(str.replaceAll(regular, "_"));}
}
public class RegularDemo5 {public static void main(String[] args) {//将连续出现了3次以上的abc替换成_String regex = "abc{3,}"; //ab后面接着3次以上的c  abccccccccString regex = "(abc){3,}"; //使用小括号将abc看作是一组,然后匹配这组出现了3次以上 abcabcabcString str = "abccccccccABC123ABC123abcABCabcabcabc123ABC123123"; // ABC(123){1,}System.out.println("要匹配的字符串为:\n" + str);System.out.println("==========================================");System.out.println(str.replaceAll(regex, "_"));//需求2:ABC后面跟上出现1次以上的123为一个整体进行匹配//ABC123123123regex = "ABC(123){1,}";System.out.println(str.replaceAll(regex, "_"));//需求3:ABC后面跟上出现1次以上的123或者abc为一个整体进行匹配  ABCabc  ABC123 ABCabcabc ABC123123123// ABC(123|abc){1,}//ABC123123//ABCabcabcregex = "ABC(123|abc){1,}";System.out.println(str.replaceAll(regex, "_"));}
}
public class RegularDemo6 {public static void main(String[] args) {//日期案例String str = "2022-03-28 dasdas 2022-04-05";String regex = "(\\d{4})-(\\d{2})-(\\d{2})";  // "xxxx-xx-xx"System.out.println(str.replaceAll(regex,"$3/$1")); // 03/28/2022 dasdas 04/05/2022//需求2:我不想你取出月份regex = "(\\d{4})-(?:\\d{2})-(\\d{2})";System.out.println(str.replaceAll(regex,"$2/$1"));}
}

小练习:编写一个java程序检验qq号是否符合规范
            1、必须全部都是数字
            2、必须是5-11
            3、不能以0开头

代码:

/*需求:编写一个java程序检验qq号是否符合规范1、必须全部都是数字2、必须是5-113、不能以0开头通过对比发现,正则表达式的使用确实要比普通的if-else语句简洁。但是呢,我们虽然使用起来很方便,但是写这个规则过程比较的麻烦,因为正则表达式的目的是为了对字符串进行匹配,替换,切分,截取要保证我们写的正则表达式达到一个通用一个效果,所以写出一个正则表达式需要大量的数据进行寻找规则或规律,比较费事。1、正则表达式本质上也是一个字符串,只不过是由一些特殊的语法构成2、正则表达式这门技术,不依附于任意一门语言的,一个正则表达式可以在任意一门语言中使用*/
public class RegularDemo1 {public static void main(String[] args) {String qq = "12465723"; // 5-11//        System.out.println(yanZheng(qq));System.out.println(yanZheng2(qq));}public static boolean yanZheng2(String qq){return qq.matches("[1-9][0-9]{4,10}");}public static boolean yanZheng(String qq){boolean flag = false;char[] chars = qq.toCharArray();if(!qq.startsWith("0")){if(qq.length()>=5 && qq.length()<=11){boolean flag2 = true;for (char c : chars) {if(!Character.isDigit(c)){flag2 = false;break;}}flag = flag2;}}return flag;}
}

Enum枚举:

在jdk1.5之后,java提供了一关键词,可以描述一个枚举类  enum

    1. 将枚举相关的对象放在开头
    SPRING("春天", "春暖花开")
    2. 创建枚举类的属性(成员遍历),必须是作为私有常量出现
    3. 必须将构造方法私有化,这是为了保证类的对象是有限个的目的
    4. 提供公共的获取属性的方法
    5. 重写toString()方法

代码如下:

enum Season2{//表示有限个对象,必须放在枚举类第一个部分SPRING("春天","春暖花开"),SUMMER("夏天","夏日炎炎"),AUTUMN("秋天","硕果累累"),WINTER("冬天","万里雪疆");
//用上面的枚举类写法代替了以下常规的写法public static final Season SPRING = new Season("春天","春暖花开");public static final Season SUMMER = new Season("夏天","夏日炎炎");public static final Season AUTUMN = new Season("秋天","硕果累累");public static final Season WINTER = new Season("冬天","万里雪疆");private String name;private String describe;private Season2(){}private Season2(String name,String describe){this.name = name;this.describe = describe;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getDescribe() {return describe;}public void setDescribe(String describe) {this.describe = describe;}@Overridepublic String toString() {return "Season{" +"name='" + name + '\'' +", describe='" + describe + '\'' +'}';}
}public class EnumDemo2 {public static void main(String[] args) {Season2 spring = Season2.SPRING;Season2 summer = Season2.SUMMER;System.out.println(spring);System.out.println(summer);}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com