正则表达式(附demo)

正则表达式

1.基本操作

连接操作:

写出 A,表示匹配A,写出B,表示匹配AB;

public static void main(String[] args) {
  String s = "AB";
  boolean isMatches = Pattern.matches("AB",s);
  System.out.println(isMatches);
}
运行结果true

或操作:

写出 A|B ,会匹配 A或者B,写出 AB|BC|CD,会匹配AB,BC,或者CD

public static void main(String[] args) {
  String s = "CD";
  boolean isMatches = Pattern.matches("AB|BC|CD",s);
  System.out.println(isMatches);
}
运行结果:true

闭包操作

将*标注在要重复的模式之后,即可将模式部分重复任意的次数

public static void main(String[] args) {
  String s = "AAAAAAAAB";
  boolean isMatches = Pattern.matches("A*B",s);
  System.out.println(isMatches);
}
这个demo将A重复任意次,匹配前面有任意个A,以B结尾的字符串
运行结果:true

括号

使用括号可以改变默认的优先级顺序

public static void main(String[] args) {
  String s = "MAMAMAMAMAMAMAMAMAB";
  boolean isMatches = Pattern.matches("(MA)*B",s);
  System.out.println(isMatches);
}
匹配前面有任意个MA,最后以B结尾的字符串

demo练习:匹配ABMAMA和BAMAMA这俩个字符串

答案:

public static void main(String[] args) {
  String s = "BAMAMA";//ABMAMA
  boolean isMatches = Pattern.matches("(AB|BA)(MA)*",s);
  System.out.println(isMatches);
}
运行结果true
2.字符集操作

这里先把操作列出来,然后再使用demo演示

  1. 使用.来匹配任意字符
  2. 使用[]来指定一个集合,比如 [AFGHS] 就是匹配集合中任意一个字符
  3. 使用包含在[]中的-来指定范围,如[A-Z]是匹配A-Z中任意一个字符
  4. 使用包含在[]中的^来取补集,如[ ^ABC]来除ABC外任意一个字符

demo

public static void main(String[] args) {
       //使用.来匹配任意的字符
       String s1 = "ABC";
       System.out.println(
               Pattern.matches("A.C",s1)
       );
       //使用[]来表示集合
       String s2 = "ABXZW";
       System.out.println(
               Pattern.matches("[BAZWX]*",s2)
       );
       //使用-来表示范围,如匹配大写小写数字这种模式
       String s3 = "Bc5Hg1";
       System.out.println(
               Pattern.matches("([A-Z][a-z][0-9])*",s3)
       );
       //使用^来进行取反集合
       String s4 = "ASD";
       System.out.println(
               Pattern.matches("[^ASD]*",s4)
       );
   }
3闭包的其他写法

前面的闭包运算符表示将它的操作数重复任意次,在实际使用中,我们希望能够灵活指定重复的次数

+运算符表示至少重复一次

?表示重复0次或一次

使用{}可以指定重复次数或范围

demo

   public static void main(String[] args) {
       //+表示最少重复一次
       String s1 = "AB";//空串情况为false
       System.out.println(
               Pattern.matches("(AB)+",s1)
       );
       //使用?来表示重复0次或一次
       String s2 = "ABAB";//AB 或者 空串时为true,ABAB为false
       System.out.println(
               Pattern.matches("(AB)?",s2)
       );
       //使用{}来指定模式的次数
       String s3 = "ABABAB";
       System.out.println(
               Pattern.matches("(AB){3}",s3)
       );
       //使用{}来指定重复次数的范围
//        String s4 = "ABABAB";
//        System.out.println(
//                Pattern.matches("(AB){1-5}",s4)
//        );

   }
最后那个可能是字符串转义问题吧~-
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值