【Java】正则表达式,校验数据格式的合法性。

news2024/11/15 19:58:07

在这里插入图片描述

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~
个人主页:.29.的博客
学习社区:进去逛一逛~

在这里插入图片描述

正则表达式


  • 正则表达式

    • ①可以校验字符串是否满足一定的规则,并用来校验数据格式的合法性。
    • 案例:对象名.matches("[1-9]\\d{5,19}")
      • [1-9]:开头范围1 - 9,即0不在开头
      • \\d:表示数字
      • {5,19}:字符串在6位到20位之间
  • 规则:

  • 在这里插入图片描述

  • 细节

    • &&符号表示交集,单一的&符号没有特殊含义,仅表示符号本身。
    • \:转义字符,改变后面那个字符原本的含义。
  • ②根据文本查找满足要求的内容(爬虫)

    • 本地爬虫
    • //正则表达式相关jar包:
      import java.util.regex.Matcher;
      import java.util.regex.Pattern;
      
      //正则表达式,在一段文本中查找满足要求的内容
      public class regexDemo {
      	public static void main(String[] args) {
      		String str = "Java是一种编程语言、Java17是长期版本,Java8和"
      				+ "Java11是企业中用的最多的两个版本。";
      		
      		//1.Pattern表示正则表达式,获取正则表达式实例对象
      		Pattern p = Pattern.compile("Java\\d{0,2}");
      		
      		//获取文本匹配器对象
      		//m:文本匹配器对象
      		//p:规则
      		//str:文本
      		//m要在str中寻找符合规则p的字符子串
      		Matcher m = p.matcher(str);
      		
      		//2.find()使用文本匹配器从头读取文本,不存在满足规则p的子串,返回false,
      		//存在满足规则的字串,记录起始索引和结尾索引+1
      		while(m.find()) {
      			//3.group()根据find()记录的索引截取字符串,[起始索引,结尾索引+1)
      			System.out.print(m.group() + " ");
      		}
      	}
      
      }
      
    • 带条件爬取:Java(?=8|11|17):?表示左括号前的数据Java,=表示数据Java后拼接的数据,8或11或17,?=在find()记录时,只记录前半部分数据的索引,而?:则获取全部数据。

    • 贪婪爬取(尽可能多地获取数据):

      • 只写+和*表示贪婪匹配(Java中默认就是贪婪爬取)
      • +?表示非贪婪匹配(尽可能少地获取数据)
      • *?表示非贪婪匹配(尽可能少地获取数据)

在这里插入图片描述

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

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

相关文章

互联网Java工程师面试题·Java 面试篇·第一弹

目录 1、Java 中能创建 volatile 数组吗? 2、volatile 能使得一个非原子操作变成原子操作吗? 3、volatile 修饰符的有过什么实践? 4、volatile 类型变量提供什么保证? 5、10 个线程和 2 个线程的同步代码,哪个更容…

MPI并行编程技术

MPI并行编程技术 MPI含义及环境搭建安装点对点通信阻塞型接口MPI_SendMPI_Recv 阻塞式示例tag雅可比迭代示例死锁 MPI含义及环境搭建安装 MPICH官网 Github地址 MPI历史版本下载地址 安装教程 MPI介绍 MPI课程 点对点通信 阻塞型接口 MPI_Send MPI_Recv 阻塞式示例 tag 雅…

贪心算法(1)--经典贪心算法

目录 一、活动安排问题 二、最优装载问题 三、分数背包问题 四、多机调度问题 一、活动安排问题 1、策略 活动安排问题:设有n个活动的集合E{1,2,...,n},每个活动i都有一个使用该资源的起始时间和一个结束时间,且。如果选择了活动i则它在…

新年学新语言Go之五

一、前言 Go虽然不算是面向对象语言,但它支持面向对象一些特性,面向接口编程是Go一个很重要的特性,而Go的接口与Java的接口区别很大,Go的接口比较复杂,这里仅用一个最简单例子做介绍,复杂的我也还没学。 …

VMware中安装centos无网络,配置教程

VMware虚拟机中装了centos7,装完之后一直无法联网,网上的教程都试了也没用,这里记录一下最后的解决方案。 VMware配置 1. 点击 虚拟机-》设置 windows配置 打开电脑网络连接 共享选项选中我们虚拟机网络中包含的VMnet8的 VMnet8网络就自动变成这样了&a…

软件研发流程、架构规范、技术标准、需求过程等全文档

前言: 软件项目管理全文档包括以下几个方面:需求分析、项目规划、过程管理、测试和部署。 全文档获取:Q:262086839 例图在文末。 正文: 一、需求分析是软件项目管理的第一步,也是非常关键的一步。在需求分析阶段&…

SpringCloud 微服务全栈体系(二)

第三章 Eureka 注册中心 假如我们的服务提供者 user-service 部署了多个实例,如图: 思考几个问题: order-service 在发起远程调用的时候,该如何得知 user-service 实例的 ip 地址和端口?有多个 user-service 实例地址…

Xline 源码解读(四)—— CURP 状态机引擎

在上一篇源码解读的文章(Xline 源码解读(三) —— CURP Server 的实现)中,我们简单阐述了Xline 的 Curp Server 是如何实现的。接下来,就让我们话接上回,继续深入地来了解 Curp Server 中的一些…

网络安全中的人工智能:优点、缺点、机遇和危险

2022 年秋天,人工智能在商业领域爆发,引起了轰动,不久之后,似乎每个人都发现了 ChatGPT 和 DALL-E 等生成式 AI 系统的新的创新用途。世界各地的企业开始呼吁将其集成到他们的产品中,并寻找使用它来提高组织效率的方法…

Spring Cloud Gateway 路由构建器的源码分析

Spring Cloud Gateway 路由构建器的源码分析 文章目录 1. 路由构建器的入口2. 创建路由规则3. 设置路由规则和属性4. 路由过滤器的设置5. 构建和获取路由规则:6. 实例化路由构建器:8. 路由构建器的源码分析8.1 RouteLocator接口8.2 RouteLocatorBuilder…

漏刻有时地理信息系统LOCKGIS小程序配置说明(web-view组件、服务器域名配置、复制链接和转发功能)

漏刻有时地理信息系统说明文档(LOCKGIS、php后台管理、三端一体PC-H5-微信小程序、百度地图jsAPI二次开发、标注弹窗导航)漏刻有时地理信息系统LOCKGIS小程序配置说明(web-view组件、服务器域名配置、复制链接和转发功能)漏刻有时地理信息系统LOCKGIS主程序配置说明(地图调起弹…

【面试经典150 | 栈】有效的括号

文章目录 Tag题目来源题目解读解题思路方法一:栈哈希表 其他语言cpython3 写在最后 Tag 【栈】 题目来源 20. 有效的括号 题目解读 括号有三种类型,分别是小括号、中括号和大括号,每种括号的左右两半括号必须一一对应才是有效的括号&#…

react 中获取多个input输入框中的值的 俩种写法

目录 1. 使用受控组件 2. 使用非受控组件 1. 使用受控组件 这是React中最常见的方法,每个输入框都与React组件的state相关联,并通过onChange事件来更新state。 代码示例: import React, { Component } from react;class MultipleInputExam…

机器人SLAM与自主导航

机器人技术的迅猛发展,促使机器人逐渐走进了人们的生活,服务型室内移动机器人更是获得了广泛的关注。但室内机器人的普及还存在许多亟待解决的问题,定位与导航就是其中的关键问题之一。在这类问题的研究中,需要把握三个重点&#…

安卓使用android studio跨进程通信之AIDL

我写这篇文章不想从最基础的介绍开始,我直接上步骤吧. 1.创建服务端 1.1:创建服务端项目:我的as版本比较高,页面就是这样的 1.2:创建AIDL文件,右键项目,选中aidl aidl名字可以自定义也可以默认 basicTypes是自带的,可以删掉,也可以不删,然后把你自己所需的接口写上去 1.3:创建…

5、Kafka集成 SpringBoot

SpringBoot 是一个在 JavaEE 开发中非常常用的组件。可以用于 Kafka 的生产者,也可以 用于 SpringBoot 的消费者。 1)在 IDEA 中安装 lombok 插件 在 Plugins 下搜索 lombok 然后在线安装即可,安装后注意重启 2)SpringBoot 环境准…

Vue 3.0中Treeshaking特性是什么?

一、是什么 Tree shaking 是一种通过清除多余代码方式来优化项目打包体积的技术,专业术语叫 Dead code elimination 简单来讲,就是在保持代码运行结果不变的前提下,去除无用的代码 如果把代码打包比作制作蛋糕,传统的方式是把鸡…

VTK8.0.0编译+QT5.9.2+VS2017

背景 VTK网上资料较多并且使用较多的版本可能是VTK8.2.0,但是由于之前先配置了QT 5.9.2 msvc2017 PCL1.8.1 VTK8.0.0环境,听说有人PCL1.8.1配置VTK8.2.0实测版本不兼容,需修改源码调试,比较麻烦,所以之前就使用的VT…

Unity 中3D数学基础-向量

本文主要全面讲解向量的数学运算已经对应的实际应用意义! 1.向量的认识 向量(矢量) 有1、2、3维! 向量既可以表示大小也可以表示方向,也可以表示一个空间坐标点!因此他虽然是一个数学数字表示,但是实际空间意义有这三种! 坐标点A(x,y,z) 表示与原点连线构成的方向…

前端常见的数据类型有哪些?

在前端开发中,常见的数据类型包括: 1:字符串(String):表示文本数据,用引号(单引号或双引号)括起来,例如:“Hello, World!”。 创建字符串:let str = ‘Hello, World!’;获取字符串长度:let length = str.length;字符串拼接:let newStr = str1 + str2;2:数字(N…