package reg
object reg04 {
def main(args: Array[String]): Unit = {
//1 从文本中读出内容
val content = scala.io.Source.fromFile("address.txt").mkString
println("读入进来的内容是:")
println(content)
//2写一个手机号的正则
val reg = "1[23234]\d".r
reg.findAllIn(content).foreach(println)
//替换:正确的典型的应用场景
// reg.replaceAllIn,全部替换
//在content中通过正则去找字符串,找到了之后,就换成指定的内容
val newContent = reg.replaceAllIn(content,"这有个手机号")
println("替换之后的内容是:")
println(newContent)
}
}
(三)replaceAllin正则替换
功能:对目标字符中的内容,进行正则查找,对找到的内容使用指定的内容进行替换,并返回替换之后的字符串。
格式:正则.replaceAll(目标字符串, 匹配到的内容 => 要替换的内容 )
package reg
/**
*目标:
* 13612345678 -> 136****5678
*任务:从一个文本文件中(自己准备一个),读出一段内容,把其中的手机号识别出来,并打码
* address.txt
* 湖北省 潜江市 泰丰办事处 青龙沟小区 X栋3单元 范先生 13612345678 ,13678245678
*
*/
object reg05 {
def main(args: Array[String]): Unit = {
//定义一个正则表达式
val content= scala.io.Source.fromFile("address.txt").mkString
println("请输入进来的内容:")
println(content)
//写一个手机号的正则
//使用小括号()分组
val reg = "(1[35678]\d{2})(\d{3})(\d{4})".r
//val reg = "SB".r
//匹配输出
// reg.findAllIn(content).foreach(println)
//替换:正则的典型的应用场景
//replaceAllIn,全部替换。
//在content中通过正则去找字符串,找到之后,就换成指定的内容,并把最终结果保存到newContent
// val newContent= reg.replaceAllIn(content,"嘿嘿,这儿有个手机号")
val newContent= reg.replaceAllIn(content,m => {
println(m.group(0))//当前正则匹配到完整内容
println(m.group(1))//当前正则的第一个分组(第一个小括号)匹配到的内容
println(m.group(2))
println(m.group(3))
//println()
//"手机号:"+m
//m的前三位+”****"+m的后四位
m.group(1)+"***"+m.group(3)
})
println("替换之后的内容")
println(newContent)
}
}