Scala 的正则表达式

正则表达式的定义:

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

Scala 复制代码
object Test43 {
  def main(args: Array[String]): Unit = {
    //定义一个规则  正则表达式
    val reg="[123]".r

    //1. 查找。在目标字符串中,找到符合正则表达式规则要求的 子串
//    val rs=reg.findFirstIn("abc a")
//    if(!rs.isEmpty){
//      println("你找到的,符合正则表达式要求的内容是",rs.get)
//    }
    reg.findAllIn("1a 2bc a3d").toList.foreach(println)
  }
}
复制代码
//1. . 表示 除了换行之外的其他的任意单个字符
//2. \d 等于[0-9] 匹配一个数字 digit
//3. \D 除了\d 之外的其他任意字符。表示非数字
//4. \w 等价于[0-9A-Za-z_] 63个字符,表示一个字 word
//5. \W 除了\w之外的任意字符。表示非字
//6. \s 表示一个空格 space
//7. \S 表示一个非空格
Scala 复制代码
object Test43 {
  def main(args: Array[String]): Unit = {
//    println("a\tb")
    //定义一个规则  正则表达式
//    val reg="[a-2A-Z0-9]".r
    //val rge="^a$".r
    //1. . 表示 除了换行之外的其他的任意单个字符
    //2. \d 等于[0-9] 匹配一个数字 digit
    //3. \D 除了\d 之外的其他任意字符。表示非数字
    //4. \w 等价于[0-9A-Za-z_] 63个字符,表示一个字 word
    //5. \W 除了\w之外的任意字符。表示非字
    //6. \s 表示一个空格 space
    //7. \S 表示一个非空格
//    val reg=".".r
    val reg="\\s".r

    //1. 查找。在目标字符串中,找到符合正则表达式规则要求的 子串
//    val rs=reg.findFirstIn("abc a")
//    if(!rs.isEmpty){
//      println("你找到的,符合正则表达式要求的内容是",rs.get)
//    }
    reg.findAllIn("_Ai 1234am a12 no, y3es, ok,").toList.foreach(println)
  }
}

正则表达式的应用场景:

  1. 查找

  2. 验证

  3. 替换

案例一:验证用户名是否合法

规则:

  1. 长度在6-12之间

  2. 不能数字开头

  3. 只能包含数字,大小写字母,下划线

Scala 复制代码
  def main(args: Array[String]): Unit = {
    val name1="1admin"
    val name2="admin123"
    val name3="admin"
    val name4="ad_123Ab"
    val name5="admin123!"

    //通过正则表达式来判断
    val reg="[a-zA-Z_]\\w{5,11}".r
    println(reg.matches(name1))
    println(reg.matches(name2))
    println(reg.matches(name3))
    println(reg.matches(name4))
    println(reg.matches(name5))
  }

案例二:

复制代码
任务: 把字符串中的手机号打码:类似于:138****5678
Scala 复制代码
  def main(args: Array[String]): Unit = {
    var str="张先生,手机号:13812345678    你买的 xxx 到了"
    //开始你的代码
    //138   1234    5678

//    val reg="1[3-9]\\d{9}".r
    // () 是分组,它不会影响正则表达式的查询结果,但是,它会把分组找到的内容单独保存在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)
  }

案例三:把字符串中的身份证号打码

Scala 复制代码
  def main(args: Array[String]): Unit = {
    var str="张先生,ID: 429005200001231156"
    val reg="(1[10-16]\\d)(\\d{6})(\\d[\\dX])".r
    val newStr=reg.replaceAllIn(str,(m)=> m.group(1)+"--------"+m.group(3))
//      println(m.group(1))
//      println(m.group(2))
//      println(m.group(3))
//      m.group(1)+"------"+m.group(3)
    println(newStr)
  }
相关推荐
飞由于度15 分钟前
C#编程报错- “ComboBox”是“...ComboBox”和“...ComboBox”之间的不明确的引用
开发语言·c#
Invulnerabl_DL1 小时前
C++ STL学习
开发语言·c++·学习·stl
steamedobun1 小时前
【爬虫】selenium打开浏览器以及页面
开发语言·python·selenium
智慧老师1 小时前
数据结构第一弹-数据结构在不同领域的应用
开发语言·数据结构·python
caifox2 小时前
C# 探险之旅:第十四节 - 函数介绍
开发语言·c#
zi__you2 小时前
【Python网络爬虫 常见问题汇总】
开发语言·爬虫·python
水w3 小时前
微服务之间的相互调用的几种常见实现方式对比 2
java·开发语言·后端·微服务·架构
梧桐树04293 小时前
python面向对象高级编程:使用@property
开发语言·python
2401_846535953 小时前
Scala的泛型类和泛型特质
开发语言·后端·scala
刘翔在线犯法3 小时前
Scala的导入
开发语言·后端·scala