正则表达式

定义:

种类:

1.字符类

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

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

2.量词

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

    //1.查找,在目标字符串中,找到符合正则表达式规则要求的 子串
//    val rs = reg.findFirstIn("abc a")
//    if (!rs.isEmpty) {
//      println("你找到的,符合正则表达式要求的内容是", rs.get)
//    }
    reg.findAllIn("1a 2bc a3b d e").toList.foreach(println)
  }
}

习题 1:

Scala 复制代码
object test10 {
  def main(args: Array[String]): Unit = {
   
    //规则1:有11个数字
    //规则2:开头是1
    //规则3:第二位是3-9的数字
    var reg = "1[3-9]\\d{9}".r
    reg.findAllIn("01234567890 13a12345678 13812345678 and 10987654321 are phone number").toList.foreach(println)
  }
}

习题2:

Scala 复制代码
//验证用户名是否合法
//规则:
//1.长度在6-12之间
//2.不能数字开头
//3.只能包含数字,大小写字母,下划线
object test11 {
  def main(args: Array[String]): Unit = {
    val name1 = "1admin"  //不合法,是数字开头
    val name2 = "admin1" //合法
    val name3 = "admin" //不合法,长度不够
    val name4 = "ad_1234AB"  //合法
    val name5 = "admin123!"  //不合法,!是不允许的

    //通过正则表达式来判断
    val reg = "[a-zA-Z_]\\w{5,11}".r
    println(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值
  }

}

习题3:

Scala 复制代码
//任务:把字符串中的手机号打码:类似于:138****5678
object teat12 {
  def main(args: Array[String]): Unit = {
    var str = "张先生,手机号:13812345678 13612345454 寝室号:1345-01 你买的xxx到了"
    //var str = "张先生,ID:429005200001231156"
    //var str = "张先生,ID:4290052000------=56"
    //开始你的代码
    //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)
    //"张先生,手机号:13812345678  你买的xxx到了"
  }

}

习题4:

Scala 复制代码
//任务:把字符串中的身份证号打码,类似于:429005200------56
object test13 {
  def main(args: Array[String]): Unit = {
    val str = "张先生,ID:429005200001231156"
    val reg = "(\\d{10})(\\d{6})(\\d[\\dX])".r
    val newStr = reg.replaceAllIn(str, (m) =>   m.group(1) + "------" + m.group(3))
//      println(s"第一组:${m.group(1)}")
//      println(s"第二组:${m.group(2)}")
//      println(s"第三组:${m.group(3)}")
    println(newStr)

  }
}
相关推荐
吴声子夜歌8 小时前
正则指引——Ruby
开发语言·正则表达式·ruby
吴声子夜歌11 小时前
正则指引——Golang
开发语言·golang·正则表达式
吴声子夜歌2 天前
正则指引——PHP
开发语言·正则表达式·php
吴声子夜歌3 天前
正则指引——断言
正则表达式
吴声子夜歌3 天前
正则指引——匹配原理
java·正则表达式
吴声子夜歌5 天前
正则表达式——环视
开发语言·正则表达式
吴声子夜歌5 天前
正则表达式——边界
正则表达式
营养充电站6 天前
C++23 新特性在 CLion 中的实战体验
macos·docker·jupyter·正则表达式
吴声子夜歌6 天前
正则表达式——字符组
正则表达式