java数据结构与算法基础-----字符串------正则表达式的练习案例---持续补充中

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846
正则表达式基础:https://blog.csdn.net/grd_java/article/details/136120841

文章目录

  • 一、简单的应用实例
    • 1. 验证输入的是否是汉字
    • 2. 数字相关
    • 3. 验证复杂的URL
  • 二、反向引用案例
  • 三、结巴去重案例
  • 四、算法题

一、简单的应用实例

1. 验证输入的是否是汉字

  1. 百度,或者问人工智能ChatGPT等,查询unicode对应的汉字编码,我们查到是16进制的4e00 - 9fa5. 对应到正则表达式就是\u4e00-\u9fa5
    在这里插入图片描述
  2. 我们对一个字符串进行匹配,必须满足汉字开头,汉字结尾,也就是全部都得是汉字,所以需要用到正则定位符^$来定位开头和结尾。匹配所有汉字1个或多个,使用[\u4e00-\u9fa5]+
    在这里插入图片描述
  3. 此时如果我们匹配的字符串并不全由汉字组成,就会返回false
    在这里插入图片描述

2. 数字相关

6位数,第一个数不能为0,其余5个数随便。例如123890

在这里插入图片描述

public static void main(String[] args) {String content = "125806";Pattern pattern = Pattern.compile("^[1-9]\\d{5}$");Matcher matcher = pattern.matcher(content);//按照pattern定义的匹配规则,到content中匹配if(matcher.find()) System.out.println("匹配成功");else System.out.println("匹配失败");}
qq号码:1-9开头,剩余数字随便的5-10位数,例如12389,914401258

在这里插入图片描述

  1. 关键在于使用{num1,num2}来限定数量,因为一共5-10个数,开头确定不能为0,剩余4-9个就可以用\\d{4,9}来作为匹配规则
手机号码:以13、14、15、18开头的11位数,例如13722095854

在这里插入图片描述

3. 验证复杂的URL

下面的案例并不严谨,只是练习,如果想要正在利用正则表达式解决相关问题,做字符串相关的算法题会达到专项提升的效果。类似于数据库中sql语句的运用,就是不断解决问题,提高自己的处理问题的能力。

随便找一个URL为例:https://www.bilibili.com/video/BV1j4411W7F7/?spm_id_from=333.337.search-card.all.click&vd_source=f0637064fb8570e4bb79c51a3c016b30
在这里插入图片描述

  1. 第一部分:https://或者http://。正则表达式非常简单:(?<one>http(?:s|))://,首先是命名捕获分组,名称为one,限定匹配https或者http。后面跟://
  2. 第二部分:域名,前面的部分可能由若干个:数字、字母、下划线、横线+一个点组成。最后会跟.cn或.com等等。(?<two>(?:[\\w-]+\\.)+[\\w-]+)命名捕获为two,\\w表示任意字母数字或下划线,[\\w-]表示从\\w或者-选一个。后面跟+,表示匹配若干个,然后\\.表示匹配点。然后将这部分整体用+修饰,表示匹配若干个。最后通过[\\w-]+匹配最后的.cn等内容
    在这里插入图片描述
  3. 第3部分:后面的路径和文件名。主要由/分隔,并且由数字、字母、下划线、-、?、=、&、/、%、.、组成。当然第3部分是可有可无的,例如www.baidu.com就没有第三部分。所以用?修饰,表示0个或1个第三部分。正则表达式为(?<three>(?:\/[\w-?=&/%.]*))?$
    在这里插入图片描述

各位可能有些许疑问,[.]中的点,为什么不加转义符号,因为点是特殊字符,如果我们想要原样匹配,需要加转义符号[\\.]的形式。这是因为,类似(?:pattern)和[pattern]这种,都可以不需要转义符,而直接原样匹配特殊字符

    public static void main(String[] args) {String content = "https://www.bilibili.com/video/BV1j4411W7F7/?spm_id_from=333.337.search-card.all.click&vd_source=f0637064fb8570e4bb79c51a3c016b30";Pattern pattern = Pattern.compile("(?<one>http(?:s|))://"+"(?<two>(?:[\\w-]+\\.)+[\\w-]+)"+"(?<three>(?:\\/[\\w-?=&/%.]*))?$");Matcher matcher = pattern.matcher(content);//按照pattern定义的匹配规则,到content中匹配while(matcher.find()){System.out.println("匹配到的URL:"+matcher.group(0));System.out.println("http协议为:"+matcher.group("one"));System.out.println("主机资源地址(ip+端口号或者域名):"+matcher.group("two"));System.out.println("路径和文件位置:"+matcher.group("three"));}}

二、反向引用案例

三、结巴去重案例

四、算法题

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

异地组网为什么会失败?能不能试试SD-WAN?

在今天的全球化时代&#xff0c;许多企业需要在不同地区建立分支机构和办事处&#xff0c;以满足业务扩张和市场需求。然而&#xff0c;异地组网面临着诸多挑战&#xff0c;包括网络延迟、带宽限制、数据安全等问题&#xff0c;这些都可能导致异地组网失败。SD-WAN 技术的出现为…

NLP 笔记:LDA(训练篇)

1 前言&#xff1a;吉布斯采样 吉布斯采样的基本思想是&#xff0c;通过迭代的方式&#xff0c;逐个维度地更新所有变量的状态 1.1 举例 收拾东西 假设我们现在有一个很乱的屋子&#xff0c;我们不知道东西应该放在哪里&#xff08;绝对位置&#xff09;&#xff0c;但知道哪…

攻防世界[EASYHOOK]

攻防世界 * 2 题目&#xff1a;EASYHOOK题目地址&#xff1a;[](https://adworld.xctf.org.cn/challenges/list)总结&#xff1a;最后来聊一下hook 题目&#xff1a;EASYHOOK 题目地址&#xff1a; 拿到程序后无壳直接ida32打开&#xff0c;发现逻辑如下&#xff0c;输入长度…

GT20L16S1Y标准汉字字库芯片完全解析(1)

本文内容参考&#xff1a; 字库芯片GT20L16S1Y使用记录-CSDN博客 GT20L16S1Y字库IC驱动_gt20l16s1y字库芯片测试程序-CSDN博客 《GT20L16S1Y 标准点阵汉字库芯片产品规格书 V4.0I_K 2023-04》 特此致谢&#xff01; 一、概述 GT20L16S1Y是&#xff08;上海集通数码科技有限…

云原生(五)、Docker-Swarm集群

基础环境说明 1、环境准备 1、启动4台服务器&#xff08;在同一个网段内&#xff09;。 2、重命名4台服务器&#xff0c;方便区分。 hostnamectl set-hostname swarm1 reboot安装docker。参考文章&#xff1a;云原生&#xff08;二&#xff09;、Docker基础 2、DockerSwarm…

注册中心的基础知识

什么是注册中心 当服务启动时,将服务信息服务名称/IP/端口写入注册中心.注册中心接收服务端信息时保存服务信息,并且维护服务列表数据当服务消费者启动时会通过IP:端口(注册中心)远程链接注册中心. 获取服务列表信息.缓存到本地 当消费者调用服务时,查找缓存到本地的服务列表…

使用 ReclaiMe Pro 查找并恢复网络中的 SSH 服务器数据

天津鸿萌科贸发展有限公司是 ReclaiMe Pro 数据恢复软件的授权代理商。ReclaiMe Pro 数据恢复软件专注于恢复几乎所有文件系统及各种类型和复杂程度的 RAID 阵列。 在本文中&#xff0c;我们介绍 ReclaiMe Pro 对于采用 SSH 连接方式的网络服务器中数据的恢复方法。 ReclaiMe…

Orbit 使用指南 10|在机器人上安装传感器 | Isaac Sim | Omniverse

如是我闻&#xff1a; 资产类&#xff08;asset classes&#xff09;允许我们创建和模拟机器人&#xff0c;而传感器 (sensors) 则帮助我们获取关于环境的信息&#xff0c;获取不同的本体感知和外界感知信息。例如&#xff0c;摄像头传感器可用于获取环境的视觉信息&#xff0c…

RabbitMQ之Plugins插件----AMQP对接MQTT

1.启用插件 rabbitmq-plugins enable rabbitmq_mqtt 2.检查是否启动成功&#xff0c;打开rabbitmq后台 3.概念&#xff1a; AMQP是由交换器和queue队列组成的消息队列机制&#xff0c;MQTT是由订阅主题组成的消息机制 1.MQTT创建连接时会向rabbitmq创建一个自己的queue&…

kali安装docker(亲测有效)

第一步&#xff1a;添加Docker官方的GPG密钥 curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add - 第二步&#xff1a; 第二步更新源 echo deb https://download.docker.com/linux/debian stretch stable> /etc/apt/sources.list.d/docker.list…

Hive SQL必刷练习题:排列组合问题【通过join不等式】

排列组合问题【通过join不等式】 这种问题&#xff0c;就是数学的排列不等式&#xff0c;一个队伍只能和其余队伍比一次&#xff0c;不能重复 方法1&#xff1a;可以直接通过join&#xff0c;最后on是一个不等式【排列组合问题的解决方式】 方法2&#xff1a;也可以是提前多加…

SpringBoot健康监控

文章目录 1-SpringBoot2-监控-健康监控服务2-SpringBoot2-监控-Admin可视化 在Spring Boot中&#xff0c;可以通过Actuator模块实现应用程序的健康监控。Actuator是Spring Boot提供的一个用于监控和管理应用程序的模块&#xff0c;可以轻松地查看应用程序的运行状况、性能指标和…