(一)matchs方法
正则表达式对象有matches方法,它的作用是验证给定的字符串是否满足正则表达式的要求。它的格式如下:
val 结果 = 正则.matches(目标字符串)
其中的结果是一个bool值。
package reg
/**
* 目标: 手机号打码
* 13512345678 -> 135****5678
* 任务:从一个文本文件(自己准备一个),读出一段内容,把指中的手机号码找出来,并打码。
* 例如:
* 湖北省 潜江市 泰丰办事处 章华小区 X栋34单元 张先生 13512345678,18712345678
*/
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[3578]\d{8}".r
// 匹配输出
reg.findAllIn(content).foreach(println)
}
}
(二)replaceAllin正则替换
功能:对目标字符中的内容,进行正则查找,对找到的内容使用指定的内容进行替换,并返回替换之后的字符串。
格式:正则.replaceAll(目标字符串, 匹配到的内容 => 要替换的内容 )来
代码一
package reg
/**
* 目标: 手机号打码
* 13512345678 -> 135******678
* 任务:从一个文本文件(自己准备一个),读出一段内容,把指中的手机号码找出来,并打码。
* 例如:
* 湖北省 潜江市 泰丰办事处 章华小区 X栋34单元 张先生 13512345678,18712345678
*/
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[3578]\d{8}".r
// 匹配输出
// reg.findAllIn(content).foreach(println)
// // 备注: 正则的后面也可以加
// //replaceAllIn: 全量替换,找到之后,根据指定的内容,把匹配的结果保存到newContent
val newContent = reg.replaceAllIn(content, "这个是手机号")
println("替换之后的内容是:")
println(newContent)
}
}
代码儿
package reg
object reg06 {
def main(args: Array[String]): Unit = {
// 1. 从文本文件中读出内容
val content = scala.io.Source.fromFile("address.txt").mkString
println("读入进来的内容是:")
println(content)
// 2. 写一个手机号的正则
// 使用小括号() 分组
val reg = "1([3578])\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))
m.group(1) + "****" + m.group(3)
})
println("替换之后的内容是:")
println(newContent)
}
}