【Java基础】初识正则表达式

img
正则表达式只适用于字符串

匹配matches

实际使用的是String类中定义的方法boolean matches(String regex)

public static void piPei( ){
	String regex="[1][356789]\\d{9}";
	boolean boo="14838384388".matches(regex);
	System.out.println(boo);
}

验证qq号是否合法:5-15, 不能以0开头,必须全是数字

class Demo5 
{
	public static void main(String[] args) 
	{
		//String regex="[1-9][0-9]{4,14}";//正则表达式
		String regex="[1-9]\\d{4,14}";//正则表达式
		String qq="123456478";
		System.out.println(qq.matches(regex));
		System.out.println(checkQQ("sqd123456"));
	}
	public static boolean checkQQ(String qq){
		int l=qq.length();
		if (l>=5&&l<=15){
			if(!qq.startsWith("0")){
				try{
					long num=Long.parseLong(qq);
					return true;
				}catch (NumberFormatException e){
					System.out.println("qq号必须全为数字!");
				}
			}
			else	System.out.println("不能以0开头!");
		}
		else	System.out.println("长度不合法!");
		return false;
	}
}

切割

实际使用的是String类中定义的方法 String[] split(String regex) ,根据字符串中符合正则规则的字符串进行切割

public static void qieGe(){
    String str1="zhangsan,lisi,wangwu,zhaoliu";
	String regex1=",";
    String str2="zhangsan     lisi  wangwu    zhaoliu";
	String regex2=" +";
    String str3="zhangsan,lisi,wangwu,zhaoliu";
	String regex3="\\.";
    String str4="zhangsan$$$$$lisi*******wangwu###zhaoliu";
	String regex4="(.)\\1+";//重复字符切
    //从左往右,第一对小括号就是第一组,第二对小括号就是第二组
    String[] arr = str0.split(regex0);
    for(String ss:arr){
		System.out.println(ss);
	}
}

替换

实际使用的是String类中定义的方法 String replaceAll(String regex, String replacement) ,把字符串中符合正则规则的内容替换为第二个参数接收的字符串

public static void tiHuan(){
    String str1="zhangsan$$$$$lisi*******wangwu###zhaoliu";
    str1=str1.replaceAll("(.)\\1+","$1")
    //$1 表示取第一组的值
    String str2="owieurioeu13623456666iwoeu18663333sdf01012345";
    str2=str2.replaceAll("(\\d){6,}","****");
    //owieurioeu****iwoeu****sdf****
    String str3="13555486684";
    str3=str3.replaceAll("(\\d{3})\\d{4}(\\d{4})","$1****$2");
    System.out.println(str0);
}

获取

使用Pattern和Matcher实现

  1. 定义获取的内容符合的正则规则

  2. 把正则表达式编译为Pattern类型的对象

  3. 使用pattern类型的对象,获取Matcher对象,

    Matcher对象具备从字符串中获取我们能需要的内容的功能

  4. 使用Matcher对象获取内容 boolean find() 一次找一个

import java.util.regex.*;
class Demo{
	public static void main(String[] args) {
		String str="zhu yi le, sdhi shi shw weada sdsd";
		String regex="[a-z]{4}";
		Pattern p=Pattern.compile(regex);
		Matcher m=p.matcher(str);
		while (m.find()){
			System.out.println(m.group());
		}
	}
}

练习

String str="我我..我我..我.我要...要要...要要...要学学....学学学...编编...编编..编程...程程...程程..程.程";
str=str.replaceAll("\\.+","");
System.out.println(str);
str=str.replaceAll("(.)\\1+","$1");
System.out.println(str);
String str="192.168.1.200  10.10.10.10  4.4.4.4 127.0.0.1";
str=str.replaceAll("(\\d{1,3})","00$1");
System.out.println(str);
str=str.replaceAll("0*(\\d{3})","$1");
System.out.println(str);
String[] arr=str.split(" +");
Arrays.sort(arr);
for (String ss:arr){
	System.out.print(ss.replaceAll("0*(\\d{1,3})","$1")+" ");
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

第四篇 Asciidoc - MindMap 思维导图 不是事

MindMap 是一种对思维的简单抽象,说到底,就是一个树状结构。 以下是一个样例: Figure 1. MindMap示例 我们的目录结构、模块结构、分类结构等等,都是树型结构,它非常普遍,因此 MindMap 是笔记软件中,获得最多支持的一种图。 精确地说,这类图,是对思维结构的一种映射…

泛微OA中设置SAP接口

泛微OA中设置SAP接口 在泛微oa中有些时候我们需要对接其他系统的接口&#xff0c;这个时候就体现出泛微oa的强大兼容性了。只需要将其他系统的接口在集成中心中的SAP集成中配置即可。 在点击服务注册之后&#xff0c;需要输入服务名称&#xff0c;以及接口名称&#xff0c;并…

2024 手把手教你MathType 7.8中文破解版详细安装激活图文教程

MathType 7.8中文破解版是一款全球最受欢迎的专业数学公式编辑器工具软件,MathType可视化公式编辑器轻松创建数学方程式和化学公式.兼容Office Word,PowerPoint,Pages,Keynote,Numbers等700多种办公软件,用于编辑数学试卷,书籍,报刊,论文,幻灯演示等文档轻松编写各种复杂的物理…

Image Sensor固定模式噪声(FPN)的消除方法

本文介绍Image Sensor固定模式噪声&#xff08;FPN&#xff09;的消除方法。 固定模式噪声&#xff08;FPN&#xff09;英文全称&#xff1a;Fixed Pattern Noise&#xff0c;在Image Sensor调试过程中还是比较常见的&#xff0c;它的特点是噪声位置固定不变&#xff0c;不随采…

羊大师解读,成长路上羊大师与健康同在

羊大师解读&#xff0c;成长路上羊大师与健康同在 在成长的道路上&#xff0c;健康无疑是最宝贵的财富。让我们一同探讨如何在成长的道路上&#xff0c;与羊大师和健康并肩前行。 合理饮食&#xff1a;饮食是健康的基础。我们应该保持均衡的饮食&#xff0c;摄入足够的营养&am…

java02

泛型 泛型&#xff1a;编译时检查类型是不是正确&#xff0c;减少类型转换造成的错误。 代码复用性提升。 1.泛型类 T是类型形参&#xff0c;创建对象时传入类型实参。 如果不指定类型&#xff0c;按照object类型处理。不支持基本数据类型。 class Student<T>{ pr…

Java的response返回Json格式

问题 今天开发过程中&#xff0c;写了个拦截器&#xff0c;对于所以请求进行一个token的工作&#xff0c;对于不合标准的token返回错误&#xff0c;在网上找了个拦截器进行二次开发。 package com.maizhiyu.yzt.handle;import org.springframework.beans.factory.annotation.…

基于YOLOv5的道路裂缝检测,加入一种基于内容引导注意力(CGA)的混合融合提升2个多点

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文主要内容:详细介绍道路裂缝检测整个过程&#xff0c;从数据集到训练模型到结果可视化分析。 &#x1f4a1;&#x1f4a1;&#x1f4a1;通过加入一种基于内容引导注意力(CGA)的混合融合提升检测性能&#xff0c; 特征融合创新 | 一…

数据结构~~带环链表的环开始的节点位置**两种方法

1.带环链表环开始的位置 &#xff08;1&#xff09;上面的这个测试用例使用的是包含了4个节点的带环链表&#xff0c;我们要找的就是链表里面的环开始的节点的位置&#xff0c;拿这个测试用例而言&#xff0c;就是2这个节点&#xff0c;从这个节点开始&#xff0c;我们的链表就…

Python代码:二、多行输出

1、题目 将字符串 Hello World! 存储到变量str1中&#xff0c;再将字符串 Hello Nowcoder! 存储到变量str2中&#xff0c;再使用print语句将其打印出来&#xff08;一行一个变量&#xff09;。 2、代码 import sys str1 Hello World! str2 Hello Nowcoder! print (str1,st…

uniapp小程序使用scroll-view组件实现上下左右滚动触发事件

在做uniapp开发小程序的时候&#xff0c;有一个需求是在一个表格区域里面可以上下左右滑动元素&#xff0c;并实现表头和左侧的标签联动效果&#xff0c;就想趣运动里面选择场地的效果一样&#xff0c;这里就用到了scroll-view组件&#xff0c;scroll-view官网文档地址&#xf…

你写HTML的时候,会注重语义化吗?

其实说到语义化&#xff0c;多年前端开发经验的老手估计也不会太在意&#xff0c;有时候工期太紧&#xff0c;有时候自己疏忽&#xff0c;也就不那么在意了&#xff0c;直接DIVCSS一把梭下去了。 目录 什么是HTML 什么是HTML语义化 HTML语义化所带来的好处 我把CSS样式引入…

手机怎么制作搞笑gif?来看看这一个方法

动态图片是现在网络中很流行的一种图片格式&#xff0c;可以把多个jpg、png格式静图变成一张gif格式的动图。在各大社交媒体中非常的受欢迎&#xff0c;用简单快速的方法传递信息。当我们想要通过手机制作gif动画的时候&#xff0c;要如何操作呢&#xff1f;这时候&#xff0c;…

长沙学院数学学院领导赴泰迪智能科技开展”访企拓岗“调研活动

5月13日&#xff0c;长沙学院数学学院党总支书记谭义红&#xff0c;副书记周新华&#xff0c;辅导员王思永莅临广东泰迪智能科技股份有限公司产交融合实训基地就深入“访企拓岗”、强化校企合作促进毕业生充分就业、创新人才培养范式等领域进行了深入交流。泰迪智能科技董事长张…

Linux系统 -目录结构与配网

目录的特点 Windows中有C盘、D盘等&#xff0c;每个都是一个根系统是个多根系统 Linux中只有一个根是个单根系统 Linux-目录存储的内容 1、/root&#xff1a;管理员的家目录 2、/home&#xff1a;存储普通用户家目录的目录/3、/tmp&#xff1a;临时目录&#xff0c;这个目录存储…

使用VMware或VirtualBox安装eNSP Pro并使用CRT连接设备

文章目录 使用Oracle Virtual Box安装eNSP Pro创建虚拟机配置网卡配置带外管理网络 使用VMware Workstation安装eNSP Pro转换文件格式及虚拟磁盘模式配置网卡创建虚拟机配置使用CRT连接管理设备 前一段时间是开放了eNSP Pro的账号权限&#xff0c;但是在写博客时&#xff0c;权…

react18【系列实用教程】memo —— 缓存组件 (2024最新版)

memo 的语法 如上图所示&#xff0c;在react中&#xff0c;当父组件重新渲染时&#xff0c;子组件也会重新渲染&#xff0c;即便子组件无任何变化&#xff0c;通过 memo 可以实现对组件的缓存&#xff0c;即当子组件无变化时&#xff0c;不再重新渲染子组件&#xff0c;核心代码…

怎么获取提取二维码链接?点击链接访问内容的方法

随着现在二维码应用的场景越来越多&#xff0c;很多的产品或者场所都会有相对应的二维码来提供信息展示&#xff0c;那么当遇到无法通过扫码获取内容的情况时&#xff0c;有什么其他方法可以访问二维码的内容呢&#xff1f;下面就让小编来分享一下二维码解码功能的使用方法&…

windows部署腾讯tmagic-editor02-Runtime

创建editor项目 将上一教程中的hello-world复制过来&#xff0c;改名hello-editor 创建runtime项目 和hello-editor同级 pnpm create vite删除src/components/HelloWorld.vue 按钮需要用的ts types依赖 pnpm add tmagic/schema tmagic/stage实现runtime 将hello-editor中…