JavaSE——正则表达式(1/2):概述、初步使用(普通方法,正则表达式)、书写规则(字符类,预定义字符,数量词,其他,特殊案例)

news2025/1/15 16:54:03

目录

概述

初步使用

普通方法

正则表达式

书写规则

字符类

预定义字符

数量词

其他

特殊案例


概述

正则表达式

  • 就是由一些特定的字符组成,代表的是一个规则。

作用一:用来校验数据格式是否合法  (更简单、更便捷)

作用二:在一段文本中查找满足要求的内容

String提供的一个陪陪正则表达式的方法

public boolean matches(String regex)        判断字符串是否匹配正则表达式,匹配返回true,不匹配返回false。

初步使用

完成需求:

  • 校验QQ号码是否正确,要求全部是数字,长度是(6-20)之间,不能以0开头。

普通方法

public class InitialUseOne {
    public static void main(String[] args) {
        System.out.println(checkQQ("2668834948"));
    }
    public static boolean checkQQ(String qq){
        //1.判断QQ号码是否为null,是否以0开头,同时可以控制号码长度在6-20之间
        if(qq == null || qq.startsWith("0")|| qq.length() < 6 || qq.length() > 20){
            return false;
        }
        //2.判断是否全都是数字
        for (int i = 0; i < qq.length(); i++) {
            //根据索引提取当前位置处的字符
            char ch = qq.charAt(i);
            //判断ch存储的字符,如果不是数字,则QQ号码不合法。
            if(ch < '0' || ch > '9'){
                return false;
            }
        }
        //3.每个字符都判断完,则说明QQ号码合法
        return true;
    }
}

运行结果:

正则表达式

package user.RegularExpression;

public class InitialUseTwo {
    public static void main(String[] args) {
        System.out.println(checkQQ("2668834948"));
    }
    public static boolean checkQQ(String qq){
        return qq != null && qq.matches("[1-9]\\d{5,19}");
// [1-9]代表第一位只能是1-9的数字,\\d代表全部为数字,{5,19}表示后面的位数为5到10位
    }
}

运行结果:

书写规则

正则表达式中,一些基本符号的含义:

  • ^        :取反
  • &&     :交集,不能写单个的&
  • \         :转义字符
  • |         :写在括号外面表示并集
  • []        :里面的内容出现一次

字符类

格式含义
[abc]只能a,b,或c

[^abc]

除了a,b,c之外的任何字符
[a-zA-Z]a到z,A到Z,包括(范围)
[a-d[m-p]]a到d,或m到p
[a-z&&[def]]d,e,或f(交集)
[a-z&&[^bc]]a到z,除了b和c(等同于[ad-z])
[a-z&&[^m-p]]a到z,除了m到p(等同于[a-lq-z])

预定义字符

(只匹配单个字符)

格式含义
.任何字符(注意:\n回车符号不匹配)
\d一个数字:[0-9]
\D非数字:[0-9]
\s一个空白字符
\S非空白字符:[^\s]
\w任何单词字符:[a-zA-Z_0-9]
\W[^\w]一个非单词字符

数量词

格式含义
X?X出现一次或θ次
X*X出现零次或多次
X+X出现一次或多次
X{n}X出现正好n次
X{n, }X出现至少n次
X{n,m}X出现至少n次但不超过m次

其他

格式含义
(?i)忽略后面字符的大小写
a((?i)b)c只忽略b的大小写
()分组

特殊案例

忽略大小写:

public class Test {
    public static void main(String[] args) {
        System.out.println("abc".matches("(?i)abc"));
        //匹配结果为true

        System.out.println("ABC".matches("(?i)abc"));
        //匹配结果为true

        System.out.println("aBc".matches("a((?i)b)c"));
        //匹配结果为true

        System.out.println("ABc".matches("a((?i)b)c"));
        //匹配结果为false
    }
}

运行结果:

"或"的运用

需求:么是3个小写字母,要么是3个数字

public class Test {
    public static void main(String[] args) {
        System.out.println("123".matches("\\d{3}|[a-z]{3}"));
        //匹配结果为true

        System.out.println("abc".matches("\\d{3}|[a-z]{3}"));
        //匹配结果为true

        System.out.println("aAc".matches("\\d{3}|[a-z]{3}"));
        //匹配结果为false

        System.out.println("123abc".matches("\\d{3}|[a-z]{3}"));
        //匹配结果为false
    }
}

运行结果:

分组

需求二:必须是“我爱”开头,中间可以是至少一个“编程”,最后至少是1个“666”

public class Test {
    public static void main(String[] args) {
        System.out.println("我爱编程编程666666".matches("我爱(编程)+(666)+"));
        //匹配结果为true

        System.out.println("我爱编程编程6666666666".matches("我爱(编程)+(666)+"));
        //匹配结果为false
    }
}


END


学习自:黑马程序员——JavaSE课程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1641223.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言 | Leetcode C语言题解之第66题加一

题目&#xff1a; 题解&#xff1a; /*** Note: The returned array must be malloced, assume caller calls free().*/ int* plusOne(int* digits, int digitsSize, int* returnSize){for(int i digitsSize - 1; i > 0; --i){digits[i] digits[i] 1;//最后元素1判断是不…

SQL注入漏洞扫描---sqlmap

what SQLMap是一款先进的自动执行SQL注入的审计工具。当给定一个URL时&#xff0c;SQLMap会执行以下操作&#xff1a; 判断可注入的参数。判断可以用哪种SQL注入技术来注入。识别出目标使用哪种数据库。根据用户的选择&#xff0c;读取哪些数据库中的数据。 更详细语法请参考…

NIO和NIO.2对比

Java NIO (New Input/Output) 是从Java 1.4版本开始引入的一个新的I/O API&#xff0c;用于替代原来的BIO&#xff08;Blocking I/O&#xff09;API。NIO提供了更加灵活和高效的网络通信方式&#xff0c;特别适合于高吞吐量的网络编程。NIO的主要特点是非阻塞模式&#xff0c;它…

Spark Stream

一、Spark Streaming是什么 Spark Streaming 用于流式数据的处理。Spark Streaming 支持的数据输入源很多&#xff0c;例如&#xff1a;Kafka、Flume、Twitter、ZeroMQ 和简单的 TCP 套接字等等。数据输入后可以用 Spark 的高度抽象原语如&#xff1a;map、reduce、join、wind…

linux 服务器利用阿里网盘API实现文件的上传和下载

文章目录 背景脚本初始化 阿里云盘API工具 aligo安装aligoaligo教程实战parse.py 演示上传文件上传文件夹下载文件下载文件夹 背景 最近在用ubuntu系统做实验&#xff0c;而ubuntu 系统的文件上传和下载操作很麻烦&#xff1b; 于是便打算使用阿里网盘的API 进行文件下载与上传…

深度学习每周学习总结P7(咖啡豆识别)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 –来自百度网盘超级会员V5的分享 数据链接 提取码&#xff1a;7zt2 –来自百度网盘超级会员V5的分享 目录 0. 总结1. 数据导入及处理部分…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-10.1-NXP SDK 移植

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

IDEA 多模块项目报错 Cannot Save Settings 问题

IDEA 多模块项目报错 Cannot Save Settings 问题 Cannot Save Settings&#xff1a; Module "spring_cloud_sentinel_demo" must not contain source root "D:\java_test\Intesij_idea\spring_cloud_sentinel_demo\order_service_rest\src\main\resources"…

一键去除衣物DeepNode合成软件下载

dn软件Windows版下载地址&#xff1a;点击下载 ai一键去除衣物(DeepNode)是一款非常好用的一键换装软件&#xff0c;它可以创造出不同的图像效果&#xff0c;还可以对人的面部特征进行微调&#xff0c;使用户的图片更有特色。软件中还有许多模板可以随意使用以供参考&#xff0…

高效时间序列分析的开源利器:QuestDB

QuestDB&#xff1a;探索数据的深度&#xff0c;加速决策的速度- 精选真开源&#xff0c;释放新价值。 概览 时序数据库&#xff08;Time Series Database&#xff0c;简称TSDB&#xff09;是一种专门设计和优化的数据库系统&#xff0c;用于高效地存储、管理和查询带有时间戳…

【neteq】tgcall的调用

G:\CDN\P2P-DEV\Libraries\tg_owt\src\call\call.cc基本是按照原生webrtc的来的:G:\CDN\P2P-DEV\tdesktop-offical\Telegram\ThirdParty\tgcalls\tgcalls\group\GroupInstanceCustomImpl.cpptg对neteq的使用 worker 线程创建call Call的config需要neteqfactory Call::CreateAu…

C语言-链表实现贪吃蛇控制台游戏

使用C语言和链表实现贪吃蛇游戏 一、引言 贪吃蛇游戏是一个经典的游戏&#xff0c;它的玩法简单而富有挑战性。在这个博客中&#xff0c;我将分享如何使用C语言和链表数据结构来自主实现贪吃蛇游戏。我会详细介绍游戏的设计思路、编码过程、遇到的问题及解决方案&#xff0c;…

PG控制文件的管理与重建

一.控制文件位置与大小 逻辑位置&#xff1a;pgpobal 表空间中 物理位置&#xff1a;$PGDATA/global/pg_control --pg_global表空间的物理位置就在$PGDATA/global文件夹下 物理大小&#xff1a;8K 二.存放的内容 1.数据库初始化的时候生成的永久化参数&#xff0c;无法更改…

Java项目:基于SSM框架实现的在线医疗服务系统(ssm+B/S架构+源码+数据库+毕业论文+开题报告)

一、项目简介 本项目是一套基于SSM框架实现的在线医疗服务系统 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作简单、功能…

基于小程序实现的投票评选系统

作者主页&#xff1a;Java码库 主营内容&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 技术选型 【后端】&#xff1a;Java 【框架】&#xff1a;spring…

企业定制AI智能名片商城小程序:重塑营销场景,引领数字化营销新纪元

在数字化时代的浪潮中&#xff0c;多企业AI智能名片商城小程序以其独特的魅力和创新的功能&#xff0c;为消费者带来了前所未有的购物体验。它不仅是一个汇聚各类商品的购物平台&#xff0c;更是一个充满活力和创造力的社群生态。通过强化社群互动、鼓励用户生成内容以及引入积…

【Java从入门到精通】Java继承

继承的概念 继承是java面向对象编程技术的一块基石&#xff0c;因为它允许创建分等级层次的类。 继承就是子类继承父类的特征和行为&#xff0c;使得子类对象&#xff08;实例&#xff09;具有父类的实例域和方法&#xff0c;或子类从父类继承方法&#xff0c;使得子类具有父…

家庭用水安全新举措:保障自来水管和储水设施卫生

随着公众对家庭用水安全意识的提高&#xff0c;如何确保自来水管和楼顶储水罐的安全性和卫生已成为家庭生活中的重要议题。近期&#xff0c;专家针对此问题提出了一系列实用的注意事项和建议。 注意事项&#xff1a; 定期检查&#xff1a;专家强调&#xff0c;家庭应每季度至…

【华为 ICT HCIA eNSP 习题汇总】——题目集20

1、&#xff08;多选&#xff09;若两个虚拟机能够互相ping通&#xff0c;则通讯过程中会使用&#xff08;&#xff09;。 A、虚拟网卡 B、物理网卡 C、物理交换机 D、分布式虚拟交换机 考点&#xff1a;数据通信 解析&#xff1a;&#xff08;AD&#xff09; 物理网卡是硬件设…

./build.sh:行1: g++: 未找到命令的错误问题在centos操作系统下面如何解决

目录 g: 未找到命令报错解释g: 未找到命令解决方法 centos操作系统&#xff0c;执行一个bash&#xff0c;bash命令很简单&#xff0c;就是用g编译一个C的程序。报告错误&#xff1a; ./build.sh:行1: g: 未找到命令 g: 未找到命令报错解释 这个错误表明在执行名为 build.sh 的…