• java之正则表达式


    内容目录

    • 正则表达式介绍
    • 正则表达式重要类
    • 通配符介绍
    • 捕获组
    • 实例

    正则表达式介绍:

      用于搜索或处理文本

    正则表达式重要类:

    1. 正则表达式中设计两个中的类,分别是 Pattern和Matcher
    2. Pattern是正则表达式的编译类,用于编译表达式;该类没有公共的构造方法,只能通过Pattern p = Pattern.compile(regex) 来获取
    3. Matcher对象是增则表达式的匹配类,正则表达式编译好后用于匹配文本。

    通配符介绍:

       : 转义字符,可以匹配特殊符号或者元字符,"\"匹配"",“(”匹配“(”,“.”匹配"." 等

      ?:匹配子表达式零次或一次

      *:匹配子表达式0次或多次

      +:匹配子表达式1次或多次

      {n}:n为非负整数,表达式匹配n次,比如:[A-Za-z0-9_]{10}匹配字符数字下划线3位,即可以匹配a2_、_2b,不能匹配超过3位的字符串  

         {n,}:n为非负整数,表达式匹配至少n次,如果是{0,}等同于*,如果是{1,}等同于+,如果是{0,1}等同于?

      {n,m}:n,m均为非负整数,且n<=m

      :匹配一个边界,比如:cat可以匹配bbcat,但不能匹配bbcatb

      B:匹配非边界字符,比如:catB可以匹配bbcatb,但不能匹配bbcat

      d:匹配一个数字字符,等价于[0-9]

      D:匹配一个非数字字符,等价于[^0-9]

      s:匹配空白字符,比如空格,制表符等

      S:匹配任何非空白

      w:匹配字符数字下划线,等价于[A-Za-z0-9_]

      W:匹配非字母数字下划线,等价于[^A-Za-z0-9_]

    捕获组:

      从表达式左侧开始,每遇到一个左括号“(” 记作一个分组,编号从1开始,编号为0时代表整个表达式

    实例:

       1.匹配用户名:  

        //匹配用户名
        public  void regexUser() {
            String regex = "^(\w){3,10}$";//相当于^[A-Za-z0-9_]{3,10}
            String input = "aaaa_11235";
            boolean isMatch = Pattern.matches(regex, input);
            if (isMatch) {
                System.out.println("MATCH SUCCESS");
            }else{
                System.out.println("MATCH FAILURE");
            }
        }

       

      2.捕获组:public class GroupTest2 {

    public static void main(String[] args) {
    
            String regex = "^((\d{4})-(\d{2}))-(\d{2})$";
            String input = "2019-01-02";
            Pattern p = Pattern.compile(regex);//编译表达式
            Matcher m = p.matcher(input);  //匹配输入值
            if (m.find()) {//是否匹配
                int count = m.groupCount();//捕获组数量
                for (int i = 0; i <= count; i++) {
                    System.out.println(m.group(i));
                }
            }
        }
    }


    //输出值

    2019-01-02
    2019-01
    2019
    01
    02

     

     3.捕获组命名

    //捕获组命名
        public static void groupMM(){
            String regex = "^(?<ym>(?<year>\d{4})-(?<month>\d{2}))-(?<date>\d{2})$";
            String input = "2019-01-02";
            Pattern p = Pattern.compile(regex);//编译表达式
            Matcher m = p.matcher(input);  //匹配输入值
            if (m.find()) {//是否匹配
                System.out.println(m.group("ym"));
                System.out.println(m.group("year"));
                System.out.println(m.group("month"));
                System.out.println(m.group("date"));
            }
        }

    //输出值
    2019-01
    2019
    01
    02
  • 相关阅读:
    ctypes运用
    win10 下获取不到
    semantic ui加载慢的问题
    python 将图片转换为base64编码转储进数据库
    循环遍历共享文件夹,不需要知道目录深度拷贝上传
    计划和打算
    pyqt按键检测
    python B+数的实现
    JAVA算数运算符
    ASCLL码表
  • 原文地址:https://www.cnblogs.com/wqk66/p/10842462.html
Copyright © 2020-2023  润新知