Scala:正则表达式

ea6ca0aab6874e4f98e293e8c4542dc0.png

1f7a5d15663c41c297a51a4ae5dc196f.png

object test03 {//正则表达式def main(args: Array[String]): Unit = {//定义一个正则表达式//1.[ab]:表示匹配一个字符,或者是a,或者是b//2.[a-z]:表示从a到z的26个字母中的任意一个//3.[A-Z]:表示从A到Z的26个字母中的任意一个//4.[0-9]:表示从0到9的10个数字中的任意一个//4.1[^ab]:表示匹配一个字符,除a,b之外的//5.[11]:表示前面的字符能出现11次
//    val reg1="[0-9]{11}".r
//    val reg1="[ab]".r
//    val reg1="a.c".r
//    val reg1="\\d".r
//    val reg1="\\d{3,6}".r  //贪婪模式
//    val reg1="\\d{3,6}?".r  //非贪婪模式//6.脱字符 ^ 如果在正则的最前面,表示,要匹配的内容必须在字符串的开头//7.脱字符 $ 如果在正则的最后边,表示,要匹配的内容必须在字符串的结尾//8.英文的 .:表示除了换行之外的其他的任意一个字符//9. \d:表示 0-9 的一个数字//10. \D:表示 除了 \d之外 的字符//11. \w:表示[a-zAz-Z0-9_] 63个字符中任意一个,”一个字“//12. \W:表示 除了 \w之外 的字符//13. \s:表示空格//14: \S:表示 除了 \s之外 的字符//15. 量词//15.1 *: 表示 >=0//15.2 +: 表示 >=1//15.3 ?: 表示 0次或1次//15.4 {11}: 表示 恰好11次//15.5 {3,5}: 表示 至少3次,最多5次//15.6 {3,}: 表示 至少3次,最多不限//贪婪模式//正则匹配默认是贪婪模式的//16. ? 非贪婪模式,加在量词后面//在如下字符串中 查找 满足正则表达式要求的内容
//    val str ="i am abc"//找到第一个满足条件的
//    val rs=reg1.findFirstIn("i am abc abc")
//    if (!rs.isEmpty){
//      println("找到的是:",rs.get)
//    }//找全部的
//    reg1.findAllIn("13612343314").toList.foreach(println)
//    reg1.findAllIn("i am abc abc").toList.foreach(println)
//    reg1.findAllIn("i am abc a!c a!!c").toList.foreach(println)
//    reg1.findAllIn("i am abc a!c a!!c 1 2 3").toList.foreach(println)
//    reg1.findAllIn("136123456781").toList.foreach(println)   //贪婪
//    reg1.findAllIn("136123456781").toList.foreach(println)    //非贪婪//正则查找//找全部的手机号//规则://1.11位数字//2.第一个数字是1//3.第二个数字是3—9的数
//    val reg1 = "1[3-9]\\d{9}".r
//    reg1.findAllIn("136123456781 and 13838765432 01812345678 1181212345678 are phone numbers").toList.foreach(println)   //正则查找//验证: 给定字符串是否符合正则表达式的要求//用户名的规则//1. 长度在 6-12 位//2. 只能以字母开头//3. 只能包含如下4种:字母,数字,下划线,#val name1="_56!!@@@.com"//不符合val name2="abc"//不符合val name3="admin123#"val reg2="[a-zA-Z][a-zA-Z0-9_#]{5,11}".r//matches: 验证字符串是否满足println(reg2.matches(name1))println(reg2.matches(name2))println(reg2.matches(name3))println(reg2.matches("a12312313131313131313"))//应用:替换//要求把手机号的4-7位换成xxx//(136) (1234) (5678)
//    val reg1="1[3-9]\\d{9}".rval reg1="(1[3-9]\\d)(\\d{3})(\\d{5})".rval str="13812345678 and 13987654321 are phone numbers"val newStr=reg1.replaceAllIn(str,m=>{
//      println(m.group(1))
//      println(m.group(2))
//      println(m.group(3))m.group(1) + "###" + m.group(3)})println(newStr)}
}

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

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

相关文章

可视化建模以及UML期末复习篇----UML图

这是一篇相对较长的文章,如你们所见,比较详细,全长两万字。我不建议你们一次性看完,直接跳目录找你需要的知识点即可。 --------欢迎各位来到我UML国! 一、UML图 总共有如下几种: 用例图(Use Ca…

[创业之路-191]:《华为战略管理法-DSTE实战体系》-2-BLM战略规划与执行的基本框架

目录 一、战略规划:BLM的核心内容 1. 战略规划部分 2 战略执行部分(战略解码) 二、BLM模型对企业战略制定和执行的价值 2.1 说法1: 1、共同的目标 2、同一种语言:提高团队协作效率 3、最基本的方法 4、执行的…

Python_C API详细剖析

Python/C API概述 在现代软件开发中,Python与C语言的结合为开发者提供了强大的工具,使得两者的优势得以充分发挥。Python以其简洁的语法和丰富的库支持,成为了快速开发和数据处理的首选语言;而C语言则以其高效的执行性能和底层控…

go引入skywalking

前置条件:安装好jdk11,linux服务器(centos7.9),go版本(我的是1.18,1.21都可以) 1.下载skywalking Downloads | Apache SkyWalking 2.下载agent源码 Downloads | Apache SkyWalkin…

操作系统Lesson11 - 进程调度和批处理系统调度

文章目录 调度三个问题: 进程行为何时调度调度分类依据时钟中断来分类系统环境分类 调度 调度: 一个程序。 调度对象:进程和内核级线程。 1.调度程序调度P1,读取PCB块在CPU中恢复它的现场(ctx); 2.当CPU执行完了P1之…

Delphi 实现键盘模拟、锁定键盘,锁定鼠标等操作

Delphi 模拟按键的方法 SendMessageA 说明: 调用一个窗口的窗口函数,将一条消息发给那个窗口。除非消息处理完毕,否则该函数不会返回SendMessage所包含4个参数: 1. hwnd 32位的窗口句柄窗口可以是任何类型的屏幕对象,因为Win32能够维护大多数…

java各种锁介绍

1. synchronized锁: • 定义:Java内置的关键字锁,用于实现线程间的同步。它可以修饰方法或代码块。 • 特性:隐式获取和释放锁,自动处理锁的粒度(方法级或代码块级),支持重入性。 •…

国产化(三):中间件——东方通TongWeb7.0

一、准备工作 1、软件包和license文件 2、检查jdk是否安装 二、安装 1、创建tongweb文件夹 我是把软件包放在了桌面,通过命令将软件包移动到指定文件夹下。 1—切换到opt文件夹 cd /opt 2—查看文件夹里的文件 ls 3—创建tongweb文件夹 sudo mkdir tongweb 4—检…

C++算法练习day69——376.摆动序列

题目来源:. - 力扣(LeetCode) 题目思路分析 题目:摆动序列(Wiggle Subsequence) 给定一个整数序列 nums,找到具有最大长度的摆动序列。摆动序列的定义是:如果序列中的数字不是全部…

Flume——sink连接Hive的参数配置(属性参数)

目录 配置文件官网属性参数例子 配置文件官网 可以参考官网的说明 属性参数 属性名默认值说明type无(必须指定)组件类型名称,必须是"hive"hive.metastore无(必须指定)元数据仓库地址,例如&…

Java面试题精选:设计模式(二)

1、装饰器模式与代理模式的区别 1)代理模式(Proxy Design Pattern ) 原始定义是:让你能够提供对象的替代品或其占位符。代理控制着对于原对象的访问,并允许将请求提交给对象前后进行一些处理。 代理模式的适用场景 功能增强 当需要对一个对…

Java版-图论-最小生成树-Prim算法

实现描述 如图: Prim算法的基本思想是从一个顶点开始,逐步构建最小生成树。具体步骤如下: 随机选取一个顶点作为起始点,并将其加入最小生成树的集合中。从该顶点出发,选择一条边连接到其他未被访问的顶点中的最小权…

Linux WEB服务器的部署及优化

1.用户常用关于web的信息 1.1.什么是www www是world wide web的缩写,及万维网,也就是全球信息广播的意思。 通常说的上网就是使用www来查询用户所需要的信息。 www可以结合文字、图形、影像以及声音等多媒体,超链接的方式将信息以Internet…

Rust迭代器——drain

概述: 通常用于集合类型(如Vec、HashMap等)来移除并返回集合中的元素。就是会在遍历过程中将这些元素从集合中移除,使用drain可以避免在移除元素时进行多次分配内存和拷贝的操作,从而提高性能。 示例: le…

vba学习系列(9)--按需求计数单元格数量

系列文章目录 文章目录 系列文章目录前言一、按需求计数单元格数量1.需求 二、使用步骤1.vba源码2.整理后 总结 前言 一、按需求计数单元格数量 1.需求 一个表中有多个类型的单元格内容,比如:文字、数字、特殊字符、字母数字…… 我们要计数字母数字的…

【JAVAFX】普通的确认对话框使用

普通alert确认对话框 Alert alert new Alert(Alert.AlertType.CONFIRMATION, "确定要关闭窗口吗&#xff1f;", ButtonType.YES, ButtonType.NO);alert.setHeaderText(null);alert.initOwner(primaryStage);Optional<ButtonType> result alert.showAndWait()…

opencv获取摄像头的最大分辨率图像

事情是这样的&#xff0c;在拼多多花了40买了一个4k高清的摄像偷&#xff0c;确实清楚。但是我一直以为网络摄像头分辨率只有640*480,于是用python测试了一下&#xff0c;上代码 import cv2def get_max_resolution(camera_index):"""获取摄像头的最大分辨率。&…

Redis 数据结构(二)—集合和有序集合

集合&#xff08;Set&#xff09;允许用户将多个各不相同的元素&#xff08;文本或二进制数据&#xff09;存储到集合中&#xff0c;以无序的方式存储元素。 有序集合&#xff08;Sorted Set&#xff09;同时具有“有序”和“集合”两种性质。每个元素由一个成员和分值组成。成…

【HarmonyOS学习日志(13)】计算机网络之TCP/IP协议族(二)

文章目录 TCP/IP协议族ARPDNS标志字段&#xff1a;协商具体的通信方式和反馈通信状态DNS查询问题的格式资源记录&#xff08;Resource Record, RR&#xff09;格式&#xff1a;被用于应答字段、授权字段和额外信息字段 IP协议IP服务的特点无状态无连接不可靠 IP头部结构IPv4头部…

Python + Playwright:集成 Applitools 进行视觉回归测试(快速入门)

集成 Applitools 进行视觉回归测试(快速入门) 简介Applitools 的核心特点Applitools 的应用场景1. 准备工作2. 获取示例项目2.1 下载示例代码2.2 安装依赖2.3 选择测试运行方式3. 代码解析3.1 测试用例示例4. 运行测试4.1 设置 Applitools API 变量4.2 设置 Applitools Eyes …