正则表达式

17 阅读2分钟
package reg

/**
 * 目标:手机号打码
 * 13612345678 --> 136****5678
 */

object reg03 {
  def main(args: Array[String]): Unit = {
    //1 从文本文件中读出内容
    val content = scala.io.Source.fromFile("address.txt").mkString
    println("读入进来的内容是:")
    println(content)
    //2 写一个手机号的正则
    val reg = "1[35678]\d{9}".r
    //匹配输出
    reg.findAllIn(content).foreach(println)
    //替换:正则的典型应用场景
    //replaceAllIn,全部替换。在content中通过正则去找字符串,找到后换成指定内容,把最终结果保存到newContent中
    val newContent = reg.replaceAllIn(content,"这有个手机号")
    println("替换之后的内容是:")
    println(newContent)
  }
}
object reg03 {
  def main(args: Array[String]): Unit = {
    //1 从文本文件中读出内容
    val content = scala.io.Source.fromFile("address.txt").mkString
    println("读入进来的内容是:")
    println(content)
    //2 写一个手机号的正则
    val reg = "1[35678]\d{9}".r
    //匹配输出
    reg.findAllIn(content).foreach(println)
    //替换:正则的典型应用场景
    //replaceAllIn,全部替换。在content中通过正则去找字符串,找到后换成指定内容,把最终结果保存到newContent中
    val newContent = reg.replaceAllIn(content,m =>{
      m.toString().substring(0,3) + "****" + m.toString().substring(7)
    })
    println("替换之后的内容是:")
    println(newContent)
  }
}
package reg

import java.io.FileWriter

/**
 * 目标:手机号打码
 * 13612345678 --> 136****5678
*/
 object reg02 {
    def main(args: Array[String]): Unit = {
    //1 从文本文件中读出内容
    val content = scala.io.Source.fromFile("address.txt").mkString
    println("读入进来的内容是:")
    println(content)
    //2 写一个手机号的正则
    val reg = "(1[35678]\d{2})(\d{3})(\d{4})".r
    //匹配输出
    reg.findAllIn(content).foreach(println)
    //替换:正则的典型应用场景
    //replaceAllIn,全部替换。在content中通过正则去找字符串,找到后换成指定内容,把最终结果保存到newContent中
    val newContent = reg.replaceAllIn(content,m =>{
      println(m.group(0))
      println(m.group(1))
      println(m.group(2))
      println(m.group(3))
      m.group(1) + "***" + m.group(3)
    })
      //4 把替换后的内容,写到一个新文件中
      val fileWriter = new FileWriter("newAddress.txt")
      fileWriter.write(newContent)
      fileWriter.close()
  }
}