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

正则表达式练习 1、什么是正则表达式 正则表达式由普通字符和元字符组成的表达式, 通过此模式,用来匹配特定的内容。普通字符包括大小写的字母和数字。元字符,是一些特殊符号,这些字符并不表示字面上的含义, 而会被解释为一些特定的含义.正则表达式区分大小写。正则表达式主要用于简化管理员的工作负担。 2、正则表达式分类 1、基本的正则表达式(Basic Regular Expression 又叫 Basic RegEx ... 阅读详情
java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.youkuaiyun.com/grd_java/article/details/123063846
正则表达式基础:https://blog.youkuaiyun.com/grd_java/article/details/136120841

一、简单的应用实例

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"));
        }
    }

二、反向引用案例

三、结巴去重案例

四、算法题

笔试-牛客会员选择题:字符串篇题目及解析 A 52B 7C 2D 5AJava会自动将2转换为字符串,所以5和2输出的都是字符串A aaabbbB abC aaabD bC+:+的前一个字母匹配多个字符,?:匹配?前的1个或0个字符A 替换所有数字。B 将最外层成对双引号(")内的字符解析出来。C 替换字符串内的所有ABC/Abc/abc为空字符串。D 检查字符串内的括号是否成对出现。D正则表达式只能匹配字符是否出现,或者匹配多次,无法匹配括号是否成对出现。A 6B 7C 8D 9C第一轮(a-a) 阅读详情

相关推荐

数据结构与算法代码实战讲解之:字符串与正则表达式

1.背景介绍 正则表达式(Regular Expression)也称规则表达式、匹配表达式或模式表达式,是一种文本匹配的工具,它可以用来检查一个串是否含有指定的字符、字符串、模式等,常用的正则表达式有 Perl 兼容的正则表达式、POSIX Basic Regular Expressions(BREs)、POSIX Extended Regular E

AI天才研究院 242

正则表达式练习题(含答案)

python 正则表达式

a34921324的博客 1万+

优快云粉丝冲3万粉福利放送!C++、Python、数据结构与算法、计算机基础、数据库教程汇总!

最近有粉丝问我要一些C++和Python、Java的学习资料,一个一个回复有些慢,索性就写一篇文章吧! 声明:此文章中涉及到的内容均来自网络,我看到比较好的才分享给大家,你们可以根据情况选择。 第一篇:C++ 这里可以分为基础→进阶→提升,C++的基础概念,基础部分包含数据类型、运算符等基本语法,数组、指针、字符串等基本词法,循环、函数、类等基本句法等。进阶部分分为类的高级技术、类的继承、编译链接和命名空间等。提升部分有类型转换、文件操作、异常处理、代码重用等内容。 ...

编程与实战的博客 4万+

彻底学会正则表达式

基于结合实战案例,彻底搞懂 正则表达式(含邮箱、手机、身份证等实战案例)。1. 初识正则表达式,了解正则表达式是什么。2. 正则的三大核心之 字符、数量、分组 匹配。3. 常见实战练习题4. 正则的起始结束和转义5. Python的re模块的常见方法

从正则表达式到NFA:Java实现的字符串匹配解决方案

正则表达式是文本处理的瑞士军刀,广泛应用于编程语言中处理字符串操作。它提供了一种灵活、强大且简洁的方式来描述和匹配字符串的模式。通过正则表达式,开发者可以执行搜索、替换、分割等操作,也可以验证数据格式的有效性。例如,验证电子邮件地址或电话号码是否符合预期格式。在本章,我们将探讨正则表达式的基础知识、语法以及在不同场景下的应用,确保读者能够掌握其核心概念和实际使用技巧。在深入学习正则表达式之前,了解其背后的理论基础——不确定性有穷自动机(NFA)将大有裨益。graph LR。

weixin_42372837的博客 1028

正则表达式练习器,练习正则表达式的好工具

正则表达式练习器,练习正则表达式的好工具

Python每日一练——第30天:正则表达式练习

Python每日一练——第30天:正则表达式练习

努力让自己发光,对的人才能迎着光而来 1万+

正则表达式练习题

自己总结的部分javascript的正则表达式练习,希望可以帮助大家,未完整版,随后追加

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

正则表达式

殷志鹏的博客 1307

如何用Python爬取中国土地市场网2000-2023年土地出让数据(含经纬度)

本文详细介绍了如何使用Python爬取中国土地市场网2000-2023年的土地出让数据(含经纬度),提供了一套高效的技术方案。通过应对动态加载的反爬机制、优化地理编码数据存储和设计异常处理流程,帮助开发者建立自动化数据采集管道。方案已在商业地产分析项目中验证,可稳定采集超过50万条土地交易记录。

weixin_30566063的博客 174

Chatbox使用指南

Chatbox使用指南

weixin_65289420的博客 2万+

Java基础编程练习题

很多人在自学java的时候看一遍视频,感觉就会了,课后并没有大量的练习来巩固当前所学的知识点,今天给大家整理了一些非常具有代表意义的题。 Java基础类型题 1、反转一个只有3位数的整数。 从控制台输入321,输出123 2、将一个字符由小写字母转换为大写字母。 从控制台输入 a ,输出A 3、从控制台输入一个字符串,由字母组成,转换成大写后输出。 如果输入的是小写,就转换成大写。...

坐看云起时_雨宣 4万+

Orange3实战教程:转换---预处理

部件提供了多种预处理方法,这些方法可以在单个预处理流程中组合使用。某些方法也可作为独立部件提供,支持更高级的技术和参数调整。连接到测试与评分:在交叉验证的每个批次中应用预处理器,随后学习器的预处理器会作用于预处理后的子集。连接到学习器:覆盖学习器的默认预处理流程,仅应用自定义流程(各学习器的默认步骤详见其文档)。直接连接到原始数据并输出预处理后的数据集,可能导致模型过拟合。:从原始数据中随机选择固定数量或百分比的特征,主要用于高级测试或教学用途。的预处理器输入,同时传入数据和学习器(如。

err2008的专栏 148

Java学习手册:数据结构与算法汇总

数据结构与算法程序题汇总如下:(不断更新中) 1、PAT(Basic Level)Practise-----1001 2、Java学习手册:(数据结构与算法-链表)如何实现单链表的增删操作? 3、Java学习手册:(数据结构与算法-链表)如何实现单链表排序? 4、Java学习手册:(数据结构与算法-链表)如何从链表中删除重复元素? 5、Java学习手册:(数据结构与算法-链表)如何找出单链表中的倒...

浩比的专栏 3248

04 HCM CPI SF集成-员工集成(一)

将员工主数据和组织数据从SAP Successfactors Employee CentraI复制到SAPERP或SAP S/4HANA,SAP SF CPI HCM集成

SAP CPI 146

跳蛛优化算法(JSOA)详解:从生物启发到算法实现

摘要: 跳蛛优化算法(JSOA)是一种受跳蛛狩猎行为启发的元启发式优化算法,通过模拟跳蛛的搜索猎物、迫害行为、跳跃捕食和信息素通信四种策略实现高效寻优。算法将跳蛛个体位置映射为候选解,利用物理学模型(匀加速运动、抛射轨迹)和随机策略(柯西分布、信息素机制)平衡全局探索与局部开发。JSOA具有参数少、收敛快的特点,适用于函数优化、路径规划等领域,其生物行为与数学抽象的对应关系(如表1所示)是其核心创新点。

qq_42212808的博客 125

java常用的数组、字符串、集合操作以及数据结构与算法基本知识

java中常用封装的数组 、字符串、 集合来操作对象,但数据结构中常用的有栈和队列   数与图以及他们之间的排序,查找。         数组声明没有分配内存空间  只有创建或者是初始化时才分配,创建时把数组中的数据类型数据所在的内存空间首地址赋值给数组名,在创建每个对象时,都会给该对象分配地址和它存储的数据 。如变量    int arr[]; int arr[]={1,2,3};  arr=

lu93it的博客 5065

Python + OpenCV 计算视频中运动最慢小球的坐标验证码

本文提出一种基于Python和OpenCV的视频分析方法,用于检测多个运动小球中最慢运动目标的坐标。方法主要包括:1) 通过背景差分和形态学处理提取运动前景;2) 基于轮廓面积和圆形度筛选候选小球;3) 利用图像矩计算小球质心坐标;4) 通过近邻关联构建运动轨迹;5) 根据轨迹平均速度确定最慢目标。该方法能有效处理包含线条干扰和静态大圆干扰的背景,稳定输出最慢小球的中心坐标。实验结果表明,该方法能准确识别运动最慢的小球并定位其位置。

码王吴彦祖的博客 116

Java学习笔记 | 4万字长文详细介绍Java数据类型:字符串及其数据结构 | 字符串底层原理 | 正则表达式书写语法| Regex | 字符串匹配 | KPM模式匹配 | 朴素的模式匹配

String 类代表字符串,Java 程序中的所有字符串文字(例如“abc”)都被实现为此类的实例。Java 程序中所有的双引号字符串,都是 String 类的对象。**所属包: ** String 类在java.lang包下,所以使用的时候不需要导包。符号说明匹配任何字符\d匹配一个数字:[0-9]\D匹配任何非数字[^0-9]的简写\s一个空白字符:[ \t\n\x0B\f\r] 的简写\S非空白字符:[^\s] 的简写\w单词字符(英文、数字、下划线):[a-zA-Z_0-9]的简写\W。

神马都会亿点点的毛毛张 1240

LVGL(lv_table)

LVGL中的lv_table是一个轻量级表格控件,用于显示行列式文本数据。它支持设置单元格内容/样式、行列调整、事件响应等基础功能,适用于参数配置、数据展示等场景。通过API可快速创建表格,设置行列数、填充数据,并自定义对齐方式与样式。但需注意默认无滚动条、行数限制等问题。该控件适合简单表格需求,复杂交互需结合自定义事件处理。

m0_49476241的博客 1266

Web3:Ubuntu系统 使用Docker-compose方式部署blockscout浏览器&配置版本-v5.2.3-beta+charts图表

详细介绍了在Ubuntu 23.04系统上部署Blockscout浏览器的步骤,以及过程中遇到的问题进行一一解决。

鄙人kunzhi96,感恩遇见! 2万+

5分钟快速入门JavaScript数据结构与算法的基础【①JavaScript数据结构与算法系列】

本文目录一、JavaScript的简介二、JavaScript的环境搭建三、JavaScript的基础(变量、常量、运算符、真假值)四、本章小结五、写在后面 一、JavaScript的简介 JavaScript是一门非常强大的编程语言。它也是最流行的编程语言之一,也是互联网上最卓越的语言之一。 在GitHub(世界上最大的代码托管站点)上,托管了 30w+ 的JavaScript代码仓库(用JavaScript开发的项目数量也是最多的,参看http://githut.info)。使用JavaScript的项

狼丶宇先森的网络科技空间 1880

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

第02期 基础算法(Leetcode)刻意练习开营计划

背景 如果说 Java 是自动档轿车,C 就是手动档吉普。数据结构与算法呢?是变速箱的工作原理。你完全可以不知道变速箱怎样工作,就把自动档的车子从 A 开到 B,而且未必就比懂得的人慢。写程序这件事,和开车一样,经验可以起到很大作用,但如果你不知道底层是怎么工作的,就永远只能开车,既不会修车,也不能造车。如果你对这两件事都不感兴趣也就罢了,数据结构与算法懂得用就好。但若你此生在编程领域还有点更高...

老马的程序人生 1007

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

资料分享:送你一本《数据结构与算法:Python语言描述》电子书!

下图为 TIOBE 3月编程语言排行榜。 从榜单来看,曾经铁打的 Java、C、C++ 局势,早已在数月前被 Python 的闯入而打破。究其根由,并非是 C++ 的应用领域正在逐渐缩减,而是随着人工智能、机器学习的崛起,适用于该领域的 Python 才会水涨船高,带起了市场份额,而且这种份额有扩大的趋势。 所以,学习 Python 也就变成对我们的一个新要求。要想深入的了解一门语言最好的方式就...

老马的程序人生 1万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

[Java面试——数据结构和算法]

消息摘要算法的主要特征是加密过程不需要密钥,并且经过加密的数据无法被解密,目前可以解密逆向的只有CRC32算法,只有输入相同的明文数据经过相同的消息摘要算法才能得到相同的密文。消息摘要算法不存在密钥的管理与分发问题,适合于分布式网络上使用。消息摘要算法主要应用在“数字签名”领域,作为对明文的摘要算法。何谓数字签名?数字签名主要用到了非对称密钥加密技术与数字摘要技术。数字签名技术是将摘要信息用发送者的私钥加密,与原文一起传送给接收者。

abclyq的博客 1704
上一篇: java数据结构与算法基础-----字符串------正则表达式---持续补充中
下一篇: java数据结构与算法刷题-----LeetCode451. 根据字符出现频率排序
ydenergy_殷志鹏
博客等级 码龄7年 5887粉丝 543原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ydenergy_殷志鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值