当前位置: 首页 > news >正文

Scala正则表达式

一、定义:正则表达式是一种用于匹配、查找和替换文本中特定模式的字符串。

使用方式:①定义一个正则

正则表达式应用场景:查找、验证、替换。

Ⅰ、查找

在目标字符串中,找到符合正则表达式规则要求的 子串。

方括号:

package test36object test {def main(args: Array[String]): Unit = {val reg="[abc]".r
//    val rs=reg.findFirstIn("abc a")
//    if (!rs.isEmpty){
//      println("你找到的,符合正则表达式要求的内容是",rs.get)
//    }reg.findAllIn("abc abc").toList.foreach(println)}
}
.表示除了换行之外的其他的任意单个字符
\d等于【0-9】匹配一个数字 digit
\D除了\d之外的其他的任意字符。表示非数字
\w等价于【0-9A-Za-z_】63个字符,表示一个字 word
\W除了\w之外的任意字符。表示非字
\s表示一个空格 space
\S表示一个非空格
package test36
object test {def main(args: Array[String]): Unit = {
//    val reg="[abc]".r
//    val reg="a$".r
//    val reg=".".r
//val reg="\\d\\d\\d".r
//val reg="\\D".r
//    val reg="\\w".r
//    val reg="\\W".r
//    val reg="\\s".rval reg="\\S".r
//    val rs=reg.findFirstIn("abc a")
//    if (!rs.isEmpty){
//      println("你找到的,符合正则表达式要求的内容是",rs.get)
//    }reg.findAllIn("_Ai 1234am a12 no studengt, ok,y3es,no,ok").toList.foreach(println)}
}

 Ⅱ、量词

量词查找
{n,m}把前面的字符匹配最少n次,最多m次
{n, }把前面的字符匹配最少n次,最多不限
{n}把前面的字符匹配n次
?===>{0,1}把前面的字符匹配0次或者1次
+===>{1, }把前面的字符匹配最少1次
*===>{0,}把前面的字符匹配0次。或者多次
    package test36object test {def main(args: Array[String]): Unit = {
//规则1.有11个数字//规则2:开头是1//规则3:第二位是3-9的数字var reg="1[3-9]\\d{9}".rreg.findAllIn("01234567890 13a12345678 13812345678 and 10987654321 are phone numbers").toList.foreach(println)}
}

练习一:验证合法的用户名

package test37
//验证用户名是否合法
//规则
//2.不能数字开头
//3.只能包含数字,大小写字母,下划线
object test {def main(args: Array[String]): Unit = {val name1="1shenxinghui"//不合法,是数字开头的。val name2="lishen123"//合法val name3="qy"//不合法,长度不够val name4="xyz_123Ai"//合法val name5="waqc1314!"//不合法,!是不允许的//通过正则表达式来判断val reg="[a-zA-Z_]\\w{6,12}".rprintln(reg.matches(name1))//matches对字符串做验证,返回boolean值println(reg.matches(name2))//matches对字符串做验证,返回boolean值println(reg.matches(name3))//matches对字符串做验证,返回boolean值println(reg.matches(name4))//matches对字符串做验证,返回boolean值println(reg.matches(name5))//matches对字符串做验证,返回boolean值}
}

 练习二:隐藏手机号中间4位

package test37
//任务:把字符串中的手机号打码:类似:138****5678object test2 {def main(args: Array[String]): Unit = {var str="沈星回,手机号:13812345678 13612345454 寝室号:1234-01 你买的xxx到了"//开始你的代码//()是分组,它不会影响正则表达式的查询结果,但是,它会把分组找到的内容单独保存在group中val reg="(1[3-9]\\d)(\\d{4})(\\d{4})".r//reg.replaceAllIn的功能:在目标字符串str中,用正则表达式reg去查找,找到之后,用 箭头函数 的返回值来替换//m 就是正则表达式找到的内容//如果正则表达式中有(),则 可以通过m.group来找到对应的分组val newStr=reg.replaceAllIn(str,(m)=>{println(s"第一组:${m.group(1)}")println(s"第一组:${m.group(2)}")println(s"第一组:${m.group(3)}")println("_"*40)m.group(1)+"****"+m.group(3)})println(newStr)}
}

http://www.lryc.cn/news/502478.html

相关文章:

  • 每日一刷——二叉树的构建——12.12
  • Redis配置文件中 supervised指令
  • OpenCV相机标定与3D重建(18)根据基础矩阵(Fundamental Matrix)校正两组匹配点函数correctMatches()的使用
  • python脚本:向kafka数据库中插入测试数据
  • 10. 高效利用Excel导入报警信息
  • k8s service 配置AWS nlb load_balancing.cross_zone.enabled
  • 国标GB28181网页直播平台EasyGBS国标GB28181-2016协议解读:媒体流保活机制
  • 面试经验分享 | 杭州某安全大厂渗透测试岗
  • 26. Three.js案例-自定义多面体
  • HarmonyOS-高级(四)
  • Qt-chart 画折线图(以时间为x轴)
  • 【入门】晶晶的补习班
  • c#动态更新替换json节点
  • cf补题日记
  • Golang学习笔记_01——包
  • RPC设计--应用层缓冲区,TcpBuffer
  • 基于单片机智能控制的饮水机控制系统
  • 路径规划 | 改进的人工势场法APF算法进行路径规划(Matlab)
  • 【云原生知识】Kubernets实践-前端服务如何访问后端服务
  • 【ubuntu18.04】ubuntu18.04安装EasyCwmp操作说明
  • 使用Jackson库的ObjectMapper类将JSON字符串转换为Java的Map对象
  • ASP.NET Core实现鉴权授权的几个库
  • MySql:数据类型
  • Couchbase的OLAP支持情况
  • 企业级包管理器之搭建 npm 私有服务器 (6)
  • Elasticsearch的一些介绍
  • 音乐网站设计与实现
  • UE5 蓝图节点中文化
  • java抽奖系统登录下(四)
  • 解决阿里云轻量级服务器 Ubuntu 24.04.1 LTS 没网也 ping 不通 8.8.8.8 以及 route -n 没有输出任何转发信息