当前位置: 首页 > news >正文

java Day7 正则表达式|异常

文章目录

  • 1、正则表达式
    • 1.1 常用
    • 1.2 字符串匹配,提取,分割
  • 2、异常
    • 2.1 运行时异常
    • 2.2 编译时异常
    • 2.3 自定义异常
      • 2.3.1 自定义编译时异常
      • 2.3.2 自定义运行时异常

1、正则表达式

就是由一些特定的字符组成,完成一个特定的规则
可以用来校验数据格式是否正确。

1.1 常用

在这里插入图片描述
在这里插入图片描述

//字符类 匹配单个字符
System.out.println("a".matches("[abc]"));//true
System.out.println("a".matches("[^abc]"));//false
System.out.println("ab".matches("[abc]"));//false
System.out.println("B".matches("[a-zA-Z]"));//true
System.out.println("2".matches("[a-zA-Z]"));//false
System.out.println("b".matches("[a-z&&[^bc]]"));//false
System.out.println("z".matches("[a-z&&[^bc]]"));//true
System.out.println("z".matches("[a-z&&[^bc]]"));//true
//预定义字符 单个字符 \d \s \S \w \W
System.out.println("崔".matches("."));//t
System.out.println("崔1".matches("."));//f
System.out.println("1".matches("\\d"));//[0-9] //t
System.out.println("a".matches("\\d")); //false
System.out.println(" ".matches("\\s"));  //一个空白字符 //true
System.out.println("a".matches("\\S")); //一个非空白字符 //true
System.out.println("_".matches("\\w")); //[a-zA-Z0-9] //true
System.out.println("崔".matches("\\W")); //[^a-zA-Z0-9] //truE
//数量词 ? * + {n} {n,} {n,m}              System.out.println("a12".matches("\\w{3}"));//true               System.out.println("a1".matches("\\w{3,}"));//false
System.out.println("a12345".matches("\\w{3,5}"));//false
//其他几个常用的 () 分组  |或者 (?i) 忽略大小写
System.out.println("abC".matches("(?i)abc"));//true
System.out.println("aBC".matches("a((?i)b)c"));//false
System.out.println("123".matches("\\d{3}|[a-z]{3}"));//true
System.out.println("我爱编程666666".matches("我爱(编程)*(666)+"));//true
System.out.println("我爱编程6666666".matches("我爱(编程)*(666)+"));//false

1.2 字符串匹配,提取,分割

 //用于字符串匹配System.out.println(checkphone("16603809725"));
System.out.println(checkphone("010-12456789"));
//查找某段字符串中符合要求的 字符
String s="电话:166038069725 \n"+",010-123456789"+"姓名:崔凯悦";
String regex="(1[3-9]\\d{9})|(0\\d{2,7}-?[1-9]\\d{4,11})";
Pattern compile = Pattern.compile(regex);
Matcher matcher = compile.matcher(s);
while(matcher.find()){System.out.println(matcher.group());
//16603806972
//010-123456789
}
//替换,分割
String s1="翠翠翠翠asd张吱吱吱吱bgc急急急";
String s2 = s1.replaceAll("\\w+", "-"); //翠翠翠翠-张吱吱吱吱-急急急
System.out.println(s2);
String s3="我喜喜喜喜欢欢编程";
System.out.println(s3.replaceAll("(.)\\1+", "$1")); //我喜欢编程
String s4="崔凯悦123出处456姜龙翔abc";
String[] names = s4.split("\\w+");
System.out.println(Arrays.toString(names)); //[崔凯悦, 出处, 姜龙翔]

2、异常

异常就是程序出现的错误
在这里插入图片描述

2.1 运行时异常

就是只有我们在运行时才可能会发现的错误,在编译时不会提醒你。
比如:

        Integer.valueOf("abc");//运行时异常
//        Exception in thread "main" java.lang.NumberFormatException: For input string: "abc"
//        at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)
//        at java.base/java.lang.Integer.parseInt(Integer.java:668)
//        at java.base/java.lang.Integer.valueOf(Integer.java:999)
//        at com.cky.mathclass.main.main(main.java:5)

2.2 编译时异常

在我们写程序时就会提醒我们需要捕获该异常 或者抛出该异常

 //②抛出public static void main(String[] args) throws ParseException {
//        Integer.valueOf("abc");//编译时异常
//        Exception in thread "main" java.lang.NumberFormatException: For input string: "abc"
//        at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)
//        at java.base/java.lang.Integer.parseInt(Integer.java:668)
//        at java.base/java.lang.Integer.valueOf(Integer.java:999)
//        at com.cky.mathclass.main.main(main.java:5)SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date parse = null;//编译时异常  我们必须对其异常进行捕获或者声明抛出才可以//① 对其进行捕获try {parse = simpleDateFormat.parse("2000-6-11 12:15:13");} catch (ParseException e) {e.printStackTrace();}System.out.println(parse);}

2.3 自定义异常

在我们日常开发中,很多异常情况是java没有的,我们可以自己写一个异常类,注意 该类需要继承自运行时异常(runtimeException)或者编译时异常(exception)

至于到底继承哪个,要看自己,如果你觉得这个问题很严重,需要在编译时就告诉程序员,需要其进行捕获或者抛出,就继承编译时异常,否则继承运行时异常。

比如,我们需要保存一个合法的年龄。

2.3.1 自定义编译时异常

package com.cky.mathclass;
//编译时异常
public class AgeIllegailtyException1 extends  Exception{public AgeIllegailtyException1() {}public AgeIllegailtyException1(String message) {super(message);}
}
package com.cky.mathclass;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;public class main {//②抛出public static void main(String[] args) throws ParseException {try {SavaAge1(100);} catch (AgeIllegailtyException1 e) {e.printStackTrace();}}public static void SavaAge1 (int age) throws AgeIllegailtyException1{if (age>0&&age<150){System.out.println("年龄保存成功");}else{//throw 跑出去这个异常对象上边调用者才会接受到这个异常,否则不会报错//throws 抛出方法内部的异常 用在方法上throw new AgeIllegailtyException1("/age is illegality,age is"+age);}}
}

2.3.2 自定义运行时异常

package com.cky.mathclass;public class AgeIllegalityException extends RuntimeException{public AgeIllegalityException() {}public AgeIllegalityException(String message) {super(message);}
}
package com.cky.mathclass;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;public class main {//②抛出public static void main(String[] args) throws ParseException {SavaAge(150);}public static void SavaAge(int age){if (age>0&&age<150){System.out.println("年龄保存成功");}else{//throw 跑出去这个异常对象上边调用者才会接受到这个异常,否则不会报错throw  new AgeIllegalityException("/age is illegality,age is"+age);}}
}

在这里插入图片描述

相关文章:

java Day7 正则表达式|异常

文章目录 1、正则表达式1.1 常用1.2 字符串匹配&#xff0c;提取&#xff0c;分割 2、异常2.1 运行时异常2.2 编译时异常2.3 自定义异常2.3.1 自定义编译时异常2.3.2 自定义运行时异常 1、正则表达式 就是由一些特定的字符组成&#xff0c;完成一个特定的规则 可以用来校验数据…...

Python算法题集_搜索二维矩阵

Python算法题集_搜索二维矩阵 题74&#xff1a;搜索二维矩阵1. 示例说明2. 题目解析- 题意分解- 优化思路- 测量工具 3. 代码展开1) 标准求解【矩阵展开为列表二分法】2) 改进版一【行*列区间二分法】3) 改进版二【第三方模块】 4. 最优算法5. 相关资源 本文为Python算法题集之…...

学习笔记:顺序表和链表(一、顺序表)

首先来个导言&#xff1a; 1.数组的优势&#xff1a;下标的随机访问&#xff0c;物理空间连续。数组指针用[ ]或者 * , 结构体指针用 - > 2.书写习惯 test.c写出主体框架 QelList.c写出结构体、头文件、函数声明 QelList.c写出函数的实现 3.挪动&#xff1a;如果从前…...

Midjourney从入门到实战:图像生成命令及参数详解

目录 0 专栏介绍1 Midjourney Bot常用命令2 Midjourney绘图指令格式3 Midjourney绘图指令参数3.1 模型及版本3.2 画面比例3.3 风格化3.4 图片质量3.5 混乱值3.6 随机数种子3.7 重复贴图3.8 停止3.8 垫图权重3.9 提示词权重分割 0 专栏介绍 &#x1f525;Midjourney是目前主流的…...

C语言分析基础排序算法——插入排序

目录 插入排序 直接插入排序 希尔排序 希尔排序基本思路解析 希尔排序优化思路解析 完整希尔排序文件 插入排序 直接插入排序 所谓直接插入排序&#xff0c;即每插入一个数据和之前的数据进行大小比较&#xff0c;如果较大放置在后面&#xff0c;较小放置在前面&#x…...

海格里斯HEGERLS智能托盘四向车系统为物流仓储自动化升级提供新答案

随着实体企业面临需求多样化、订单履行实时化、商业模式加速迭代等挑战&#xff0c;客户对物流仓储解决方案的需求也逐渐趋向于柔性化、智能化。作为近十年来发展起来的新型智能仓储设备&#xff0c;四向车系统正是弥补了先前托盘搬运领域柔性解决方案的空白。随着小车本体设计…...

SQLiteC/C++接口详细介绍-sqlite3类(一)

上一篇&#xff1a;SQLiteC/C接口简介 下一篇&#xff1a;SQLiteC/C接口详细介绍&#xff08;二&#xff09; 引言&#xff1a; SQLite C/C 数据库接口是一个流行的SQLite库使用形式&#xff0c;它允许开发者在C和C代码中嵌入 SQLite 基本功能的解决方案。通过 SQLite C/C 数据…...

基于UDP实现直播间聊天的功能

需求&#xff1a;软件划分为用户客户端和主播服务端两个软件client.c和server.c 用户客户端负责&#xff1a;1.接收用户的昵称2.接收用户输入的信息&#xff0c;能够将信息发送给服务端3.接收服务端回复的数据信息,并完成显示主播服务端负责&#xff1a;1.对所有加入直播间的用…...

html5cssjs代码 006 文章排版《桃花源记》

html5&css&js代码 006 文章排版《桃花源记》 一、代码二、解释页面整体结构&#xff1a;头部信息&#xff1a;CSS样式&#xff1a;文章内容&#xff1a; 这段代码定义了一个网页&#xff0c;用于展示文章《桃花源记》的内容。网页使用了CSS样式来定义各个部分的显示效果…...

勾八头歌之数据科学导论—数据采集实战

一、数据科学导论——数据采集基本概念 第1关&#xff1a;巧妇难为无米之炊 第2关&#xff1a;数据采集概念与内涵 二、数据科学导论——数据采集实战 第1关&#xff1a;单网页爬取 import urllib.request import csv import re# ********** Begin ********** # dataurllib.r…...

微信小程序云开发教程——墨刀原型工具入门(素材面板)

引言 作为一个小白&#xff0c;小北要怎么在短时间内快速学会微信小程序原型设计&#xff1f; “时间紧&#xff0c;任务重”&#xff0c;这意味着学习时必须把握微信小程序原型设计中的重点、难点&#xff0c;而非面面俱到。 要在短时间内理解、掌握一个工具的使用&#xf…...

C#与WPF通用类库

个人集成封装&#xff0c;仓库已公开 NetHelper 集成了一些常用的方法&#xff1b; 如通用的缓存静态操作类、常用的Wpf的ValueConverters、内置的委托类型、通用的反射加载dll操作类、Wpf的ViewModel、Command、Navigation、Messenger、部分常用UserControls(可绑定的Passwo…...

http协议中的强缓存与协商缓存,带图详解

此篇抽自本人之前的文章&#xff1a;http面试题整理 。 别急着跳转&#xff0c;先把缓存知识学会了~ http中的缓存分为两种&#xff1a;强缓存、协商缓存。 强缓存 响应头中的 status 是 200&#xff0c;相关字段有expires&#xff08;http1.0&#xff09;,cache-control&…...

蓝桥杯2019年第十届省赛真题-修改数组

查重类题目&#xff0c;想到用标记数组记录是否出现过 但是最坏情况下可能会从头找到小尾巴&#xff0c;时间复杂度O(n2)&#xff0c;数据范围106显然超时 再细看下题目&#xff0c;我们重复进行了寻找是否出现过&#xff0c;干脆把每个元素出现过的次数k记录下来&#xff0c;直…...

【Python使用】python高级进阶知识md总结第3篇:静态Web服务器-返回指定页面数据,静态Web服务器-多任务版【附代码文档】

python高级进阶全知识知识笔记总结完整教程&#xff08;附代码资料&#xff09;主要内容讲述&#xff1a;操作系统&#xff0c;虚拟机软件&#xff0c;Ubuntu操作系统&#xff0c;Linux内核及发行版&#xff0c;查看目录命令&#xff0c;切换目录命令&#xff0c;绝对路径和相对…...

ELK 日志分析系统

ELK &#xff08;Elasticsearch、Logstash、Kibana&#xff09;日志分析系统的好处是可以集中查看所有服务器日志&#xff0c;减轻了工作量&#xff0c;从安全性的角度来看&#xff0c;这种集中日志管理可以有效查询以及跟踪服务器被攻击的行为。 Elasticsearch 是个开源分布式…...

机器学习模型—逻辑回归

机器学习模型—逻辑回归 逻辑回归是一种用于分类任务的监督机器学习算法,其目标是预测实例属于给定类别的概率。逻辑回归是一种分析两个数据因素之间关系的统计算法。本文探讨了逻辑回归的基础知识、类型和实现。 什么是逻辑回归 逻辑回归用于二元分类,其中我们使用sigmoi…...

​Ubuntu20.04 创建新的用户​

1、了解Linux目录结构 推荐看一下&#xff1a;https://www.runoob.com/linux/linux-system-contents.html Linux支持多个用户进行操作的&#xff0c;这样提高了系统的安全性&#xff0c;也可以多人共用一个系统&#xff0c;不过要注意的是系统中安装的软件相关路径&#xff0…...

大数据入门之hadoop学习

大数据 1. 学习hadoop之前&#xff0c;我们先了解一下什么是大数据&#xff1f; 大数据通常指的是数据集规模非常庞大且难以在常规数据库和数据处理工具中有效处理的数据。 大数据的特点&#xff1a; 容量&#xff1a;大数据具有庞大的规模&#xff0c;远远超出了传统数据库和…...

MySQL安装使用(mac、windows)

目录 macOS环境 一、下载MySQL 二、环境变量 三、启动 MySql 四、初始化密码设置 windows环境 一、下载 二、 环境配置 三、安装mysql 1.初始化mysql 2.安装Mysql服务 3.更改密码 四、检验 1.查看默认安装的数据库 2.其他操作 macOS环境 一、下载MySQL 打开 MyS…...

PostgreSQL CASE语句深度解析:性能、类型与NULL安全实战指南

1. 为什么你必须真正吃透 PostgreSQL 的 CASE 语句——它远不止是 SQL 里的“if-else”翻译器在 PostgreSQL 实战中&#xff0c;我见过太多人把CASE当成一个语法糖&#xff1a;写几个WHEN...THEN&#xff0c;加个ELSE&#xff0c;再套个END&#xff0c;就以为搞定了。结果呢&am…...

别再乱用分支了!Flowable四种网关(排他/并行/包容/事件)实战选型指南

Flowable四大网关实战选型&#xff1a;从混乱到精准的决策艺术当你在设计一个请假审批流程时&#xff0c;是否遇到过这样的困惑&#xff1a;部门经理审批后需要同时通知HR和财务&#xff0c;但某些特殊情况下又需要跳过财务直接归档&#xff1f;这种看似简单的业务需求&#xf…...

Unity安卓构建72小时实战指南:从零到真机运行

1. 这不是“又一本Unity教程”&#xff0c;而是我带三个新人从零上线第一款安卓游戏的真实路径你点开这个标题&#xff0c;大概率正站在两个路口之间&#xff1a;一边是满屏“30天速成Unity”“零基础做爆款”的短视频封面&#xff0c;一边是你刚下载完Unity Hub、卡在Android …...

Sentinel-3B OLCI 3 级全球分箱地球观测降分辨率(ERR)叶绿素(CHL)数据,版本 2022.0

Sentinel-3B OLCI Level-3 Global Binned Earth-observation Reduced Resolution (ERR) Chlorophyll (CHL) Data, version 2022.0 简介 叶绿素 a 数据集提供全球网格化的表层叶绿素 a 浓度&#xff08;浮游植物生物量的替代指标&#xff09;合成数据。CHL 支持时间序列和气候…...

DeepSeek系统设计辅助:如何在48小时内完成可审计、可回滚、可压测的AI服务架构图?

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;DeepSeek系统设计辅助 DeepSeek系统设计辅助模块面向架构师与后端工程师&#xff0c;提供模型能力调用、接口契约生成、异步任务编排等核心支撑能力。该模块不替代人工设计决策&#xff0c;而是通过结构…...

告别拍脑袋规划!用ArcGIS做绿道选线:如何科学量化坡度、水域、道路成本并加权计算

科学规划绿道的ArcGIS高阶技法&#xff1a;从成本栅格构建到最优路径生成绿道规划从来不是简单的"两点之间直线最短"&#xff0c;而是需要综合考虑地形、生态、人文等多维因素的复杂决策过程。传统规划中常见的"拍脑袋"决策方式&#xff0c;往往导致建成后…...

嘈杂工业场景下的自适应VAD与双码本声纹识别鉴权系统:基于端侧轻量化神经网络与向量量化(VQ)重构

在大型化工车间、能源集控中心以及金融极密隔离库房中&#xff0c;离线声纹识别是物理访问控制和身份安全核验的重要生物特征屏障。然而&#xff0c;在环境本底噪声高达80dB以上的恶劣工业场景下&#xff0c;常规的语音活动检测&#xff08;VAD&#xff09;会频繁误触&#xff…...

学术写作创新突破!2026全流程AI论文工具精选指南

2026 年 AI 论文写作工具已进入全流程闭环 学术合规时代&#xff0c;千笔 AI&#xff08;综合评分 99 分&#xff09;中文学术场景标杆&#xff1b;Grammarly Academic与Elicit为英文论文写作首选&#xff1b;按需求匹配度 - 数据可信度 - 成本承受力三维模型选型&#xff0c;…...

PCB虚焊/走线断裂/焊盘脱落工程师易漏判

PCB 故障中&#xff0c;30% 并非元件损坏&#xff0c;而是 PCB 本身的隐性故障—— 虚焊、走线断裂、焊盘脱落、过孔开路。这类故障外观隐蔽、时好时坏、排查难度大&#xff0c;很多工程师反复更换元件仍无法解决&#xff0c;最终误判为 “板报废”。​一、PCB 隐性故障核心成因…...

保姆级避坑指南:在Ubuntu 22.04上搞定ROS2 Humble、PX4与Gazebo的联合仿真(附Empy版本降级)

保姆级避坑指南&#xff1a;Ubuntu 22.04下ROS2 Humble与PX4联合仿真的21个关键陷阱当你在Ubuntu 22.04上第一次尝试搭建ROS2 Humble、PX4与Gazebo的联合仿真环境时&#xff0c;可能会遇到比预期更多的挑战。这不是一个简单的"复制粘贴命令就能完成"的任务——版本冲…...