scala正则表达式使用

Scala语言的正则表达式 总的来说,Scala中的正则表达式提供了强大而灵活的字符串处理能力。从简单的模式匹配到复杂的数据提取,正则表达式能够满足各种需求。尽管使用正则表达式有时可能会导致一些性能和正确性的挑战,但通过合理的设计和规划,这些问题都能得到有效解决。掌握正则表达式的使用,对于Scala开发者来说是一个必要的技能,有助于提升代码的清晰度和效率。希望通过本文,读者能够对Scala的正则表达式有一个全面的认识和理解,从而在实际开发中灵活运用这一强大的工具。 阅读详情

正则表达式是一种针对于字符串的操作,主要功能有匹配、切割、替换和获取的作用,在Scala中正则也是被频繁使用的方法(regex.r表示为正则表达式)

1、匹配

Scala支持多种正则表达式解析,主要包括下面三种:

  1. String.matches()方法
  2. 正则表达式模式匹配
  3. scala.util.matching.Regex API
String.matches
val a = "studying83"
println(a.matches("[a-z0-9]+")) //true
println(a.matches("[a-z0-9]{4}"))//false
正则表达式模式匹配
val b = """([a-z0-9]+)""".r
"studying83" match {
    case b => println("匹配成功")
    case _ => println("匹配失败")
}
//匹配成功
scala.util.matching.Regex API

其中有三种匹配:

findFirstMatchIn()返回第一个匹配(Option[match])

findAllMatchIn()返回所有匹配(regex.match)

findAllIn()返回所有匹配结果(String)

//findFirstMatchIn()
val reg = "[0-9]".r
reg.findFirstMatchIn("abc3d2gf") match { 
    case Some(x) => println(x)  
    case None => println("no")
}   //3

//findAllMatchIn()
val reg = "[0-9]".r
println(reg.findAllMatchIn("abc3d2gf").toList)
//List(3, 2)

2、捕获分组

val str =  "{\"id\":\"123456\",\"friends\":{\"name\":\"zs\",\"age\":\"40\"}}"
val reg = "\\{\"id\":\"([0-9]+)\",\"friends\":\\{\"name\":\"([a-z]+)\",\"age\":\"([0-9]+)\"}}".r
reg.findAllMatchIn(str).foreach(x=>println(x.group(1),x.group(2),x.group(3)))
//(123456,zs,40)

val input="name:Jason,age:19,weight:100"
val studentPattern="([0-9a-zA-Z-#() ]+):([0-9a-zA-Z-#() ]+)".r
studentPattern.findAllMatchIn(input).foreach(x=>println(x.group(1),x.group(2)))
//(name,Jason)
//(age,19)
//(weight,100)

//实用性 例如某一日志文件内容如:INFO 2000-01-07 requestURI:/c?app=0&p=1 路径为path 对其进行解析
import scala.io.Source
val source = Source.fromFile("path","UTF-8")
val lines = source.getLines.toArray
val reg = """([A-Z]+) ([0-9]{4}-[0-9]{2}-[0-9]{1,2}) requestURI:(.*)""".r
1## lines.map(line => reg.findAllMatchIn(line).toList.map(x => (x.group(1),x.group(2),x.group(3)))).foreach(println)
//List((INFO,2020-01-07,/c?app=0&p=1))
2## lines.map(line => line match{case reg(le,ld,ad) => (le,ld,ad)})
// Array[(String)] = Array((INFO,2000-01-07,/c?app=0&p=1))

3、替换

//replaceFirstIn
val a = """([0-9]+)""".r
a.replaceFirstIn("123,go! 666","run")
// run,go! 666

//replaceAllIn
val a = """([0-9]+)""".r
a.replaceAllIn("123 you are the best!","come on!")
//come on! you are the best!

4、查找

val date = """([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})""".r
"2020-5-18" match {case date(year, _*) => println((year))}
//2020
"2020-5-18" match {case date(_,mon,_*) => println(mon)}
//5
基于STM32+OV7670的图像采集系统(基础篇:ov7670介绍) 一、简单认识 先来看一下外观: OV7670,图像传感器,体积小,工作电压低,提供单片VGA摄像头和影像处理器的所有功能。通过SCCB总线控制,可以输入整帧、子采样、取窗口等方式的各种分辨率8位影像数据。 其他介绍比较繁琐,这里就不一一赘述了,我们只需要知道它是通过SCCB总线控制的就行了。 带FIFO与不带FIFO 目前市场上购买的ov7670模块分为两种,一种是不带FIFO芯片、一种是带FIFO芯片的。 FIFO是什么:(First Input First Output)先入先出的意思, 阅读详情

相关推荐

EBSD数据转ABAQUS的inp文件实操指南

晶体塑性有限元模拟中,如何将材料微观组织表征数据转化为可计算的有限元模型,是连接实验与仿真的关键环节。EBSD技术能够获取材料表面的晶体取向、晶粒形貌和晶界分布信息,但这类数据需要经过格式解析、欧拉角转换、网格生成等步骤,才能被ABAQUS等有限元软件读取。通过将扫描点坐标映射为节点、按像素邻域生成单元,并将Bunge约定欧拉角变换为局部坐标系方向余弦,用户可以准确构建包含真实微观结构的inp文件模型。这一流程广泛应用于金属材料形变、织构演化及应力集中分析等研究场景,有效提升仿真结果与实验的一致性。围绕数据

weixin_42509513的博客 310

scala 正则超详细总结!!!

一、scala正则表达式-1 Scala支持多种正则表达式解析方式 (1)String.matches()方法 例: var a = "!123".matches("[a-zA-Z0-9]{4}") println(a) 结果:false (2)正则表达式模式匹配 var source = Source.fromFile("D:\\wcl.txt","UTF-8") var lines = source.getLines.toArray val reg = """([A-Z]+) ([0-9]{4}-[0

WCL0520的博客 1169

模型量化必知:Per-Tensor和Per-Channel到底怎么选?

本文深入解析了模型量化中Per-Tensor与Per-Channel两种核心策略的抉择。Per-Tensor量化实现简单、硬件兼容性极佳,适合激活值或分布均匀的权重;而Per-Channel量化精度更高,能更好地处理权重分布不均的卷积层,是现代CNN权重量化的主流。文章提供了从硬件平台、数值分布到精度需求的实战决策框架,并推荐了“权重Per-Channel,激活Per-Tensor”的混合量化最佳实践。

assembly8low的博客 983

Scala之正则表达式

文章目录概述格式案例一:效验邮箱是否合法案例二:过滤所有不合法邮箱案例三:获取邮箱运营商 概述 所谓的正则表达式指的是 正确的, 符合特定规则的式子 , 它是一门独立的语言, 并且能被兼容到绝大多数的编程语言 中. 在scala中, 可以很方便地使用正则表达式来匹配数据。具体如下: Scala中提供了 Regex类 来定义正则表达式. 要构造一个Regex对象,直接使用 String类的r方法 即可. 建议使用三个双引号来表示正则表达式,不然就得对正则中的反斜杠进行转义. 格式 val 正则对象名 =

大数据跟我学i 2764

【5G NB-IoT NTN】3GPP R17 NB-IoT NTN介绍_nbiot ntn

在3GPP R17协议中,将NB-IoT集成到了NTN(非陆地网络,即卫星通信)中,并定义了一个系统架构。在这个架构中包括一个可配置再生payload的低轨道(LEO)卫星,这意味着该卫星可以执行传统基站的全部或部分功能。该系统架构还可以适配同步轨道(GEO)卫星,这些卫星与LEO卫星类似,也可以配置再生payload。系统高度范围轨道波束覆盖范围LEO300~1500km绕地球转100~1000kmGEO35786km与地球自转同步200~3500km。

2401_84010302的博客 3568

DC综合中set_dft_signal的实战配置与优化策略

本文深入解析了DC综合中set_dft_signal命令的实战配置与优化策略。文章从命令的核心作用出发,详细拆解了-view、-type、-usage等关键参数,并通过扫描使能与时钟门控的实战案例,展示了如何正确配置以实现测试模式下的功耗优化。同时,文章总结了高级优化策略、与低功耗流程的协同方法以及常见错误排查清单,旨在帮助数字芯片设计工程师构建高可测性、低功耗的稳健DFT基础。

weixin_28347369的博客 403

Scala正则匹配

正则匹配的基本概念、原理和使用方法,并提供参数介绍和完整的代码案例,以帮助读者更好地理解和应用。正则匹配的基本概念、原理和使用方法,并提供了参数介绍和完整的代码案例。正则表达式是由一系列字符和特殊字符组成的模式,用于描述和匹配字符串。作为一门功能强大的编程语言,提供了内置的正则表达式库,使得在。: 返回上一次匹配操作的匹配结果的起始索引。: 返回上一次匹配操作的匹配结果的结束索引。: 匹配除了括号内的字符以外的任意字符。: 匹配前一个字符的零个或多个实例。: 匹配前一个字符的一个或多个实例。

互联网知识分享 659

gurobi最新下载安装教程 2023.11

我下载的最新版gurobi支持python3.7-python3.11,这个序号与计算机硬件捆绑,一旦激活就会失效。运行激活码之后,产生的。如果既放置在了上面的默认搜索目录,又设置了。系统环境变量(不是用户环境变量),指向保存的目录和文件名(例如。高版本产生的许可文件兼容低版本。验证不会成功,学术许可不会激活。之后cmd进入命令行,cd进入gurobi所在的。,实测不到一小时即可审核完毕,获得对应的许可。如果学校的网关没有将本校的。系统环境变量指向不同的目录和文件,原厂无关,是学校网络的设置问题。

Cachel Wood的博客 2万+

scala 正则表达式匹配_Scala教程–正则表达式,匹配

scala 正则表达式匹配 前言 这是面向初学者的Scala教程的第5部分。 该博客上还有其他文章,您可以在我正在为其创建的计算语言学课程的链接页面上找到这些链接和其他资源。 此外,您可以在“ JCG Java教程”页面上找到本教程和其他教程系列。 这篇文章是有关正则表达式(regexes)的两个文章中的第一篇,正则表达式对于各种编程任务,尤其是计算语言学任务都是必不可少的。 本教程介绍...

2915

YOLO26-seg分割优化:FPN涨点&轻量化篇 |多级特征融合金字塔(HS-FPN),助力小目标检测

​​​​​摘要:本研究对Ultralytics YOLO26进行了全面分析,重点阐述了其关键架构改进及其在实时边缘目标检测中的性能基准测试。YOLO26于2025年9月发布,是YOLO系列最新、最先进的成员,专为在边缘及低功耗设备上实现高效、精确且易于部署的目标而构建。本文依次详述了YOLO26的架构创新,包括:移除了分布焦点损失(DFL);采用端到端的无NMS推理;集成了渐进损失(ProgLoss)与小目标感知标签分配(STAL);以及引入了用于稳定收敛的MuSGD优化器。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 282

第4章 部署负载均衡 Keepalived + HAProxy

本章在所有 Master 节点部署 Keepalived + HAProxy,为 kube-apiserver 提供高可用入口。Keepalived 实现 VIP(192.168.3.59)漂移,HAProxy 轮询转发请求至三个 Master 的 6443 端口(监听 6444 避免冲突)。健康检查脚本连续 5 次失败则停止 Keepalived,触发 VIP 自动切换。本章还包含配置详解、日常运维和问题排查。

幸福街--linux技术分享 120

scala之正则表达式(一)基础匹配

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组 成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。给定一个正则表达式和另一个字符串 ,我们可以达到如下的目的: 1. 给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”); 2. 可以通过正则表达式,从字符串中获取我们想要的特定部分。 每一次

legotime的博客 2万+

MATLAB 与 STK 互联导出导弹轨迹及速度数据(csv导出)

本文介绍了如何通过 MATLAB 脚本连接 STK 提取导弹三维轨迹数据,并以 CSV 格式导出,包含以下关键内容:自动连接 STK 场景;获取所有导弹对象;提取 J2000 坐标系下的位置和速度;加入任务优先级与状态;导出为标准 CSV 文件;

weixin_52370774的博客 779

scala 正则表达式_Scala正则表达式示例

scala 正则表达式Regular expressions are pattern matching utilities found in most of the programming languages. They define a generic pattern to match a sequence of input characters. Regex are widely used i...

从零开始的教程世界 1259

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Scala 正则表达式

Scala 通过 scala.util.matching 包中的类来支持正则表达式。以下实例演示了使用正则表达式查找单词使用 String 类的可以构造了一个。使用方法找到首个匹配项。如果需要查看所有的匹配项可以使用。

钟健的博客 8781

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Scala正则表达式

正则表达式正则表达式定义示例一示例二示例三 正则表达式 在scala中,可以很方便地使用正则表达式来匹配数据。 定义 Regex类 scala中提供了Regex类来定义正则表达式 要构造一个RegEx对象,直接使用String类的r方法即可 建议使用三个双引号来表示正则表达式,不然就得对正则中的反斜杠来进行转义 val regEx = """正则表达式""".r findA...

Jamie's Blogs 371

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Scala教程–正则表达式,匹配

前言 这是面向初学者的Scala教程的第5部分。 该博客上还有其他文章,您可以在我正在为其创建的计算语言学课程的链接页面上找到这些链接和其他资源。 此外,您可以在“ JCG Java教程”页面上找到本教程和其他教程系列。 这篇文章是有关正则表达式(regexes)的两个文章中的第一篇,正则表达式对于广泛的编程任务,尤其是计算语言学任务至关重要。 本教程介绍了如何在Scala中使用它们,...

609

Scala正则表达式全面教程

正则表达式(Regular Expression,简称RegEx)是一种用于字符串搜索和操作的强大工具,它使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在Scala中,正则表达式通过类实现,提供了丰富的方法来进行各种模式匹配和字符串处理。在Scala中,正则表达式可以通过字符串字面量后跟.r来定义,这样字符串就成为了Regex对象。

2301_80870395的博客 1372

scala正则表达式

Scala 通过 scala.util.matching 包中的 Regex 类来支持正则表达式。 eg:使用正则表达式查找单词 Scala 实例中使用 String 类的 r() 方法构造了一个Regex对象。(也可直接new一个Regex对象实例) 然后使用 findFirstIn 方法找到首个匹配项。 如果需要查看所有的匹配项可以使用 findAllIn 方法。 可以使用 mkS...

Candriy的博客 1662

Scala 使用正则表达式

一、简介 正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。 二、基本语法 object ScalaRegex { def main(args: Array[String]): Unit = { // 构建正则表达式 val pattern = "Scala".r val str = "Scala is Sca

mengxianglong123的博客 1103

Scala——正则表达式

1. 当字符串中有特殊符号时 方法一、通过转义符\转义 val str="{\“id”:\“12”,\“friends\”:{\“name\”:\“zs\”,\“age\”:\“40\”}}" println(str)//{“id”:“12”,“friends”:{“name”:“zs”,“age”:“40”}} 方法二、""" … “”“来转义字符串 val str2=”""{“id”:“12”,“friends”:{“name”:“zs”,“age”:“40”}}""" println(str2)//

m0_46657040的博客 523
上一篇: 正则表达式
下一篇: Scala中Option的使用
Code_LT
博客等级 码龄10年 307粉丝 182原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值