zoukankan      html  css  js  c++  java
  • 正则表达式学习笔记

     用于判断字符串是否符合指定的规则
    一、 组成部分:
    1. 字符:
    • [abc]: 中括号代表的是一个字符, abc是指这个字符的取值范围
    • [a-z]
    • [a-zA-Z]
    • [a-zA-Z0-9_]
    • [^abc]: 这个字符的取值范围不是ac就可以了
    • [^a-z]: 不在小写字母范围
       2. 预定义字符
    • d: 表示数字字符, 相当于 [0-9]
    • D: 表示非数字字符,相当于 [^0-9]
    • w: 表示的是 [A-Za-z0-9_]
    • W: 表示的是 [^A-Za-z0-9_]
    • . : 点表示的是一个任意字符(除了 )
       3. 数量词: 假设X表示一个字符
    • X{n}: 表示X出现了n次
    • X{n,}: 表示X至少出现了n次
    • X{n,m}: 表示X出现了n-m次
    • X+: +表示X出现了一次以上,包括一次
    • X*: * 表示X出现0次以上
    • X? : ? 表示X出现了0次或者一次
       4. 正则的分组
    • (a(b(cd))efg)
    • 分组的规则
      • 有几个左小括号就有几个组
      • 第几个左小括号就是第几组
      • 第0组代表整个正则
    二、注意事项:
    1. 在java中, 双引号中两个 才能代表一个
    2. 字符串中支持正则表达式的方法:
      • matches
      • split
      • replaceAll
      • replaceFirst
    三、分组查询示例
     1 public class Test {
     2 
     3     public static void main(String[] args) {
     4 
     5         String str = "abcdabababbbbb";
     6         String regEx1 = "(a(b))cd\1+\2{4}"; //表示第一组"(ab)出现一次以上,第二组"(b)"出现四次
     7         boolean b = str.matches(regEx1);
     8         System.out.println(b);//true
     9 
    10         String str2 = "aaabbbbbbbccaaaaddddddddddddd";
    11         String regEx2 = "(.)\1+"; //表示任意字符(除"
    "外)练习出现一次以上
    12         String ss = str.replaceAll(regEx2, "$1"); //将连续重复的字符替换第一个字符
    13         System.out.println(ss); //"abcdababab"
    14 
    15         //将字符串str3转换成 "我爱编程"
    16         String str3 = "我..我....我...我......爱..爱...爱.....爱...编.....编....编..编....程....程...程....程!";
    17         //方法一
    18         //(?=X) X,通过零宽度的正lookahead,表示不理解
    19         String regEx3 = "(.)(?=.*\1)";
    20         String a = str3.replaceAll (regEx3,"");
    21         System.out.println (a); //我爱编.程!
    22         // "\p{Punct}"表示匹配 标点符号:!"#$%&'()*+,-./:;<=>?@[]^_`{|}~
    23         System.out.println (a.replaceAll ("\p{Punct}",""));//我爱编程
    24 
    25         //方法二
    26         str3 = str3.replaceAll("(我\.+)+(爱\.+)+(编\.+)+(程\.+)+(程\!+)","我爱编程");
    27         System.out.println (str3); //我爱编程
    28 
    29         //方法三
    30         str3 = str3.replaceAll ("[.!]","")
    31                 .replaceAll ("(.)\1+","$1");
    32         System.out.println (str3); //我爱编程
    33     }
    34 }
  • 相关阅读:
    luogu P1455 搭配购买
    浅谈筛素数
    luogu P1205 方块转换
    luogu P2241 统计方形
    luogu P1866 编号
    luogu P1042 乒乓球
    4.7清明考试(完蛋)
    LINUX 启动图形界面和查看运行级别
    密钥登录LINUX步骤
    服务命令只支持基本的LSB操作(启动、停止、重新启动、尝试重启、重新加载、强制重新加载、状态)。对于其他操作,请尝试使用systemctl。
  • 原文地址:https://www.cnblogs.com/gdwkong/p/7780588.html
Copyright © 2011-2022 走看看