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

    NO 方法名称 类型 描述
    1 public boolean matches(String regex) 普通 正则验证使用
    2

    public String replaceAll(String regex,String replacement)

    普通  全部替换
    3

    public String replaceFirst(String regex,String replacement)

    普通 替换首个
    4 public String[] split(String regex) 普通 全部拆分
    5

    public String[] split(String regex,int limit)

    普通 部分拆分

    正则符号(所有的正则匹配符号否在Java.util.regex.Pattern;中提供):

    1.表示单个字符(每出现一个表示一位):

    • x:表示由x组成;
    • \:表示转移字符""
    • :表示制表符, 表示换行

    2.表示字符的选用范围(每出现一个表示一位):

    • [abc]:表示可能是a b c 中的任意一个(注意:只能匹配一个字符);
    • 1 public class demo1 {
      2 
      3     public static void main(String[] args) {
      4         // TODO Auto-generated method stub
      5         String str="a";
      6         System.out.println(str.matches("[abc]"));
      7     }
      8 
      9 }
      View Code
    • public class demo1 {
      
          public static void main(String[] args) {
              // TODO Auto-generated method stub
              String str="ab";
              System.out.println(str.matches("[abc][abc]"));
          }
      
      }
      View Code
    • [^abc]:表示 任何字符,除了 a、b 或 c(否定)

    • [a-zA-Z]:a 到 z 或 A 到 Z,两头的字母包括在内(范围)

    • [0-9]:

    3.简化表达式(每出现一个表示一位):

    • .:表示任意一位字符;
    • d:表示任意一位数字,相当于[0--9];
    •     public static void main(String[] args) {
              // TODO Auto-generated method stub
              String str="2";
              System.out.println(str.matches("\d"));
          }
      }
      View Code
    • D:表示不是一个数字,相当于[^0--9];
    • s:表示任意一位空格;
    • public class demo1 {
      
          public static void main(String[] args) {
              // TODO Auto-generated method stub
              String str="	";
              System.out.println(str.matches("\s"));
          }
      }
      View Code
    • S:表示不是任意的一位空格;
    • w:表示字母(包括大写或小写)  数字 下划线中的任意一位;

    4.边界匹配:

    • ^:写在正则之前,表示正则开始;
    • $:写在正则最后,表示正则结束;

    5.数字规范:

    • ?:表示正则规范只能出现0次或者1次;
    • public class demo1 {
          public static void main(String[] args) {
              // TODO Auto-generated method stub
              String str="";
              System.out.println(str.matches("\d?"));
              String str1="22";
              System.out.println(str1.matches("\d?"));
          }
      }
      View Code
    • *:表示出现0次 1次 或者多次;
    • +:表示正则出现1次  或者多次;
    • {n}:表示此正则正好出现n次;
    • {n,}:表示此正则出现n次及n次以上;
    • {n,m}:表示此正则出现n~m次;

    6.逻辑表达式:

    • 正则X正则Y:执行正则X后执行正则Y;
    • X|Y:满足正则X或者正则Y其中一个即可;
    • (正则):表示多个正则成为一组;

    7.通过String类操作字符:

    • 如:只保留字母
    • 1 public class demo1 {
      2     public static void main(String[] args) {
      3         // TODO Auto-generated method stub
      4         String str="afajhj2313535{}]gaj>?';f'afag;lag";
      5         String regex="[^a-zA-Z]";
      6         System.out.println(str.replaceAll(regex, ""));
      7     }
      8 }
      View Code
    • 替换(利用split()函数)
    • public class demo1 {
          public static void main(String[] args) {
              // TODO Auto-generated method stub
              String str="a1b22c333d4444e55555f666666g";
              String regex="\d+";
              String [] res=str.split(regex);
              for(int i=0;i<res.length;i++)
                  System.out.println(res[i]);
          }
      }
      View Code
    • 用户名有字母 数字 下划线表示并且有6~15个字符;
    • public class demo1 {
          public static void main(String[] args) {
              // TODO Auto-generated method stub
              String str="wangxiang_123*";
              String regex="\w{6,15}";
              System.out.println(str.matches(regex));
              String regex1="(\d|[a-zA-Z]|_|\*){6,15}";
              System.out.println(str.matches(regex1));
          }
      }
      View Code
    • 现在某学校的学生成绩那照"姓名:年龄:生日:成绩"格式,这样的数据可以出现多次并以|分隔, 如:ALLEN:19:1993-05-02:98.6|JUDY:21:2000-09-02:78|SARA:20:1994-08-21:97.5
    • 下面对各个判断进行拆分:
      • 名字:
      • String str="zhansan";
        String regex="[a-zA-Z]+";
      • 年龄:
      • String str="19";
        String regex="\d{1,3}";
      • 生日:
      • String str="1993-09-02";
        String regex="\d{4}-\d{2}-\d{2}";
      • 成绩:
      • String str="98.98";
        String regex="\d{1,3}(\.\d{1,2})?";
      • 单个学生格式综合:
      • String str="ALLEN:19:1993-05-02:98.6";
        String regex="[a-zA-Z]+:\d{1,3}:\d{4}-\d{2}-\d{2}:\d{1,3}(\.\d{1,2})?";
      • 整个判断:
      • public class demo1 {
            public static void main(String[] args) {
                // TODO Auto-generated method stub
                String str="ALLEN:19:1993-05-02:98.6|JUDY:21:2000-09-02:78|SARA:20:1994-08-21:97.5";
                String regex="([a-zA-Z]+:\d{1,3}:\d{4}-\d{2}-\d{2}:\d{1,3}(\.\d{1,2})?\|?)+";
                System.out.println(str.matches(regex));
            }
        }
  • 相关阅读:
    Python全栈 MySQL 数据库 (表字段增、删、改、查、函数)
    Python全栈 MySQL 数据库 (简述 、安装、基本命令)
    Python全栈工程师(异常(高级)、运算符重载)
    Python全栈工程师(多继承、函数重写)
    【洛谷P3796】(模板)AC自动机(加强版)
    【洛谷P3808】(模板)AC自动机(简单版)
    【洛谷P3919】(模板)可持久化数组(可持久化线段树/平衡树)
    【洛谷P3834】(模板)可持久化线段树 1(主席树)
    【洛谷P3369】(模板)普通平衡树
    [USACO12FEB]牛券Cow Coupons
  • 原文地址:https://www.cnblogs.com/lukexwang/p/4592142.html
Copyright © 2011-2022 走看看