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

Scala的正则表达式

1.定义一个正则表达式

​
object test1 {
def main(args: Array[String]): Unit = {
  val reg1="\\S".r
 }
}

​

2.一些关于正则表达式的方法

//1.[ab]:表示匹配一个字符,或者是a或者是b
 //2.[a-z]:表示从a到z的26个子母中的任意一个
 //3.[A-Z]:表示从A到Z的26个子母中的任意一个
 //4.[0-9]:表示从0到9的中的任意一个
 //4.1[^ab]:表示匹配一个字符,除 a,b之外的
 //5.{11}:表示前面的字符出现11次
// val reg1="\\S".r
 //6.脱字符^ 如果在正则的最前面,表示:要匹配的内容必须在字符串的开头
 //7.脱字符$ 如果在正则的最后面,表示:要匹配的内容必须在字符串的结尾
 //8. 英文的.:表示除了换行之外的其他的任意一个字符
 //9.\d:表示0-9中的任意一个数字
 //10.\D:表示除\d外的字符
 //11.\w:表示[a-z A-Z 0-9 _]63个字符串中任意一个,"一个字"
 //12.\W:表示除\w外的所有
 //13.\s:匹配空白字符(空格)
 //14.\S:匹配非空白字符
 //15.量词
 //15.1 *:表示 >=0
 //15.2 +:表示  >=1
 //15.3 ?:表示0次或者1次
 //15.4 {11}:表示恰好11次 {3,5}至少3次,最多5次。
 //16.贪婪模式
 //正则匹配默认是贪婪模式
 //17 ?为非贪婪模式,加在量词后面

3.实例应用 找全部的手机号规则:

1.11位数字

2.第一个数字是1

3.第二个数字是3-9的数

object test1 {
def main(args: Array[String]): Unit = {
  val reg1="1[3-9]\\d{9}".r
  reg1.findAllIn("13812345678 and 0493482132 12439203302 102384920023 are phone numbers").toList.foreach(println)
 }
}

3.1验证:给定的字符串是否符合正则表达式的要求

用户名的规则

1.长度在6-12位

2.只能以字母开头

3.只能包含如下4种:字母,数字,下划线,#

代码如下:

​
​
object test1 {
def main(args: Array[String]): Unit = {
  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))
 }
}

​

​

3.2 应用:替换

要求把手机号的4-7位换成xxxx,代码如下:

​
​
​
object test1 {
def main(args: Array[String]): Unit = {
    //(136) (1234) (5678)
  //val reg1="1[3-9]\\d{9}".r
  val reg1="(1[3-9]\\d)(\\d{3})(\\d{5})".r
  val str="123 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.kler.cn/a/420939.html

相关文章:

  • Android 使用OpenGLES + MediaPlayer 获取视频截图
  • Navicat连接SQL Server及SpringBoot连接SQL Server(jtds)
  • macOS运行amd64的镜像
  • 工作:三菱PLC防止程序存储器爆满方法
  • [Effective C++]条款24 类型转换与non-member函数
  • 基数排序(代码+注释)
  • 便携微型充气泵方案开发设计
  • Node.js JWT认证教程
  • 前端如何不引入第三方插件实现pdf预览功能?
  • 开启智能 BI 新纪元:生成式 AI 工具的探索与实践
  • 微信小程序踩坑指南(一)wx:for的坑
  • 【笔记2-1】ESP32:基于vscode的espidf插件的开发环境搭建
  • FPGA设计-基于SJA1000的can控制器设计
  • Mybatis 学习 之 XML 手册
  • debian ubuntu armbian部署asp.net core 项目 开机自启动
  • 贴片式内存卡 ​SD NAND​
  • 【数据结构】队列实现剖析:掌握队列的底层实现
  • 零基础快速掌握——【c语言基础】数组的相关概念及操作
  • 电子应用设计方案-37:智能鼠标系统方案设计
  • re正则通配表达式的详尽/简洁,从来不是一对悖论
  • 二叉树的概念及其在Java中的实现
  • 【第 1 章 初识 C 语言】1.6 C 语言标准:C89/90、C99、C11、C17、C23
  • Java中如何停止一个正在运行的线程
  • Vue 90 ,Element 13 ,Vue + Element UI 中 el-switch 使用小细节解析,避免入坑(获取后端的数据类型自动转变)
  • Python+Requests接口自动化测试框架:多线程-异步执行
  • Python 爬虫实战基于 Class 的天气查询与反爬虫练习