javaSrcipt——练习正则表达式(初级练习集中营)

2023-11-07 19:40

本文主要是介绍javaSrcipt——练习正则表达式(初级练习集中营),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

字符组

字符组([])允许匹配一组可能出现的字符。

可以发现[Pp]既可以匹配大写的P也可以匹配小写的p
接下来,请你使用字符组匹配Java和 java。/[Jj]ava/

匹配多个单词

请你使用字符组匹配Ruby、Rube、ruby、rube。

/[Rr]ub[ye]/

区间

一些常见的字符组非常大,比如,我们要匹配任意的数字
如果依照上述代码,每次我们都需要使用[0123456789]。但是这样好吗?如果要匹配从a-z的字母呢?我想你肯定不愿意从a写到z了!为了适应这一点
正则表达式引擎在字符组中使用连字符(-)
代表区间,依照这个规则,我们可以总结出三点:
  • 要匹配任意数字可以使用[0-9];
  • 如果想要匹配所有小写字母,可以写成[a-z];
  • 想要匹配所有大写字母可以写成[A-Z]。
接下来需要你匹配数据所有的数字、小写字母和大写字母。/[0-9a-zA-Z]/

匹配特殊字符

正则表达使用了 - 号代表了区间 但是我们有时候需要匹配的符号就是 -号 这该怎么办呢?

这个时候我们需要对-号进行转义操作,即 -。

在正则中使用 \ 就可以进行对特殊符号进行转义, 对 - 进行转义就可以表示为 -,即 - 就代表了 - 号本身。

偷偷告诉你,转义符 \ 也适用于其他的符号,例如匹配圆括号可以使用 (

/[\[\]\-\(\)]/

在这里插入图片描述

匹配字母

[]字符组中可以放多个条件例如,想要匹配数字的小写字母可以这样写:[0-9a-z]

使用正则表达式匹配字母,规则如下:
匹配a-z的小写字母;
匹配A-F的大写字母;

/[a-zA-F]/

匹配目标数据

[a-f0-3]

在这里插入图片描述

取反

到目前为止,我们定义的字符组都是由可能出现的字符定义,不过有时候我们可能希望根据不会出现的字符定义字符组。
例如:匹配不包含数字的字符组
在这里插入图片描述

可以通过在字符数组开头使用 ^ 字符实现取反操作,从而可以反转一个字符组(意味着会匹配任何指定字符之外的所有字符)。

这里的 n[^e] 的意思就是n后面的字母不能为 e
接下来请你匹配后面不包含的数据。

/爱[^你]/

不含小写字母的数据

请编写正则表达式,匹配不包含小写字母的数据。/[^a-z]/

快捷匹配数字和字母

以目前学到的内容,如果想要匹配所有的字母,会使用[A-Za-z],要匹配数字会使用

[0-9]

还有没有更简洁的方式呢?

正则表达式引擎提供了一些快捷方式如:\w 可以与任意单词字符匹配。

当我们想要匹配任意数字的时候也可以使用快捷方式\dd即digit数字的意思,等价于[0-9]

快捷方式描述
\w与任意单词字符匹配,任意单词字符表示 [A-Z]、 [a-z]、[0-9]、_
\d与任意数字匹配

匹配单词
接下来,请你使用快捷方式匹配下面的单词。

在这里插入图片描述

匹配空白

\s快捷方式可以匹配空白字符,比如空格,tab、换行等。

匹配空白分隔的单词
在这里插入图片描述

单词边界

\b 匹配的是单词的边界,例如,
在这里插入图片描述\bmaster\b 就仅匹配有边界的master单词。

/\bcode\b/

在这里插入图片描述

匹配数字和小写字母

你需要使用一个正则表达式匹配字符串中的数字和小写字母。

/[a-z0-9]/

快捷方式取反

快捷方式也可以取反,例如对于\w的取反为\W,将小写改写成大写即可,其他快捷方式也遵循这个规则。

在这里插入图片描述

在这里插入图片描述

开始和结束

正则表达式中 ^指定的是一个字符串的开始,$指定的是一个字符串的结束。
在这里插入图片描述
在这里插入图片描述
请编写正则表达式匹配以OS结尾的字符串。

OS$

在这里插入图片描述

任意字符

.字符代表匹配任何单个字符,它只能出现在方括号以外。

值得注意的是: .字符只有一个不能匹配的字符,也就是换行符(\n),不过要让.字符与换行符匹配也是可以的,以后会讨论。
在这里插入图片描述

可选字符

有时,我们可能想要匹配一个单词的不同写法,比如colorcolour,或者honorhonour

这个时候我们可以使用 ? 符号指定一个字符、字符组或其他基本单元可选,这意味着正则表达式引擎将会期望该字符出现零次或一次。

在这里插入图片描述
这里 u? 表示u是可选的,即可以出现也可以不出现,可以匹配的是 honor 和 honour 。
通过这个案例可以知道?的作用就是匹配它之前的字符0次或1次。

请你思考一个问题: .? 表达式能匹配什么呢?

请你使用正则来匹配 favorite和favourite这两种写法。

/favou?rite/

可选任意字符

请你使用正则来匹配codejiaonang的不同写法。

/\(?code\.?\(?\-?\)?\s?jiaonang/codejiaonang
code.jiaonang
code-jiaonang
(code)jiaonang
code(jiaonang)
code jiaonang

重复

到目前为止,我们只是学习了关于仅出现一次的字符串匹配,在实际开发中,肯定不能满足需求,比如要匹配电话号码、身份证的时候就无法满足需求了。
如果遇到这样的情况,我们可能期望一个字符组连续匹配好几次。
在一个字符组后加上{N} 就可以表示在它之前的字符组出现N次。

/\d{3}\-\d{5}/

在这里插入图片描述

重复区间

能有时候,我们不知道具体要匹配字符组要重复的次数,比如身份证有15位也有18位的。
这里重复区间就可以出场了,语法:{M,N},M是下界而N是上界。
举个例子:

Alt\d{3,4} 既可以匹配3个数字也可以匹配4个数字,不过当有4个数字的时候,优先匹配的是4个数字,这是因为正则表达式默认是贪婪模式,即尽可能的匹配更多字符,而要使用非贪婪模式,我们要在表达式后面加上 ?号。

匹配电话号码

使用正则表达式提取电话号码,假设电话号码有两种规则:

  • 以3个数字开头,后面7个数字,例如:020-7281333
  • 以4个数字开头,后面7个数字,例如:0731-8283431

现在请你使用一个正则表达式匹配所有符合这两种规则的电话号码。

/\d{3,4}?\-\d{7}/

Alt

开闭区间

有时候我们可能遇到字符组的重复次数没有边界,例如:

Alt
闭区间不写即可表示匹配一个或无数个。
速写

  • 还可以使用两个速写字符指定常见的重复情况,可以使用 + 匹配1个到无数个,使用 *代表0个到无数个。
  • 即:+等价于{1,}*等价于{0,}

Alt

Alt
匹配f开头的数据

/^f\w+/

在这里插入图片描述

匹配所有手机号码

现在请你使用正则表达式匹配手机号码,假设手机号码规则如下:

  • 必须是11位的数字;
  • 第一位数字必须以1开头,第二位数字可以是[3,4,5,7,8]中的任意一个,后面9个数是[0-9]中的任意一个数字。
/^1[3-8]\d{9}/

在这里插入图片描述

匹配网站地址

请编写正则表达式,匹配以 http开头,以/结尾的所有数据。

/https?.\//

在这里插入图片描述

匹配以fu结尾的数据

/.*fu$/

在这里插入图片描述

实践:匹配电话号码

匹配电话号码,假设电话号码可以有下列两种方式:

  • 0XX-XXXXXXX,例如020-8810456;
  • 0XXXXXXXXX,例如0208810456。

020 代表区号,8810456是电话号码,区号第一个数字必须是0,电话号码的第一个数字必须大于等于1。

/0\d{2}\-?[1-9][0-9]{6}/

在这里插入图片描述

实践:匹配所有王姓同学的信息

^.+\d{4}

在这里插入图片描述

实例描述
[Pp]ython匹配 “Python” 或 “python”。
rub[ye]匹配 “ruby” 或 “rube”。
[abcdef]匹配中括号内的任意一个字母。
[0-9]匹配任何数字。类似于 [0123456789]。
[a-z]匹配任何小写字母。
[A-Z]匹配任何大写字母。
[a-zA-Z0-9]匹配任何字母及数字。
[^au]除了au字母以外的所有字符。
[^0-9]匹配除了数字外的字符。
实例描述
.匹配除 “\n” 之外的任何单个字符。要匹配包括 ‘\n’ 在内的任何字符,请使用象 ‘[.\n]’ 的模式。
?匹配一个字符零次或一次,另一个作用是非贪婪模式
+匹配1次或多次
*匹配0次或多次
\b匹配一个长度为0的子串
\d匹配一个数字字符。等价于 [0-9]。
\D匹配一个非数字字符。等价于 [^0-9]。
\s匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
\S匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\w匹配包括下划线的任何单词字符。等价于’[A-Za-z0-9_]’。
\W匹配任何非单词字符。等价于 ‘[^A-Za-z0-9_]‘。

💚最后感谢张哲同学提供的资料: [])

感谢张同学带来的温暖💖

这篇关于javaSrcipt——练习正则表达式(初级练习集中营)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/365840

相关文章

javax.net.ssl.SSLHandshakeException:异常原因及解决方案

《javax.net.ssl.SSLHandshakeException:异常原因及解决方案》javax.net.ssl.SSLHandshakeException是一个SSL握手异常,通常在建立SS... 目录报错原因在程序中绕过服务器的安全验证注意点最后多说一句报错原因一般出现这种问题是因为目标服务器

Java实现删除文件中的指定内容

《Java实现删除文件中的指定内容》在日常开发中,经常需要对文本文件进行批量处理,其中,删除文件中指定内容是最常见的需求之一,下面我们就来看看如何使用java实现删除文件中的指定内容吧... 目录1. 项目背景详细介绍2. 项目需求详细介绍2.1 功能需求2.2 非功能需求3. 相关技术详细介绍3.1 Ja

springboot项目中整合高德地图的实践

《springboot项目中整合高德地图的实践》:本文主要介绍springboot项目中整合高德地图的实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一:高德开放平台的使用二:创建数据库(我是用的是mysql)三:Springboot所需的依赖(根据你的需求再

spring中的ImportSelector接口示例详解

《spring中的ImportSelector接口示例详解》Spring的ImportSelector接口用于动态选择配置类,实现条件化和模块化配置,关键方法selectImports根据注解信息返回... 目录一、核心作用二、关键方法三、扩展功能四、使用示例五、工作原理六、应用场景七、自定义实现Impor

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

SpringBoot整合Flowable实现工作流的详细流程

《SpringBoot整合Flowable实现工作流的详细流程》Flowable是一个使用Java编写的轻量级业务流程引擎,Flowable流程引擎可用于部署BPMN2.0流程定义,创建这些流程定义的... 目录1、流程引擎介绍2、创建项目3、画流程图4、开发接口4.1 Java 类梳理4.2 查看流程图4

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

Java对异常的认识与异常的处理小结

《Java对异常的认识与异常的处理小结》Java程序在运行时可能出现的错误或非正常情况称为异常,下面给大家介绍Java对异常的认识与异常的处理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参... 目录一、认识异常与异常类型。二、异常的处理三、总结 一、认识异常与异常类型。(1)简单定义-什么是

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

Java使用HttpClient实现图片下载与本地保存功能

《Java使用HttpClient实现图片下载与本地保存功能》在当今数字化时代,网络资源的获取与处理已成为软件开发中的常见需求,其中,图片作为网络上最常见的资源之一,其下载与保存功能在许多应用场景中都... 目录引言一、Apache HttpClient简介二、技术栈与环境准备三、实现图片下载与保存功能1.