- 从文本文件中读入一些包含手机号的字符串
- 把手机号识别出来
- 把手机号的中间4位打码,保存到一个新的文本文件中
def main(args: Array[String]): Unit = {
val source = scala.io.Source.fromFile("address.txt").mkString
val reg = """(1[356789])(\d)(\d{4})(\d{4})""".r
val newSource = reg.replaceAllIn(source, m => {
println(m.group(0))
println(m.group(1))
println(m.group(2))
println(m.group(3))
m.group(1) + "****" + m.group(3)
m.toString
})
val writer = new java.io.PrintWriter("address.new.txt")
writer.write(newSource)
writer.close()
}
| 能匹配很多规则的字符 | | | |
|---|
| . | 匹配除换行外单个字符 | a.c,文本abc、a&c等 | a.c可匹配多种,只要中间是一非换行字符 |
| \d | 等价[0-9],匹配数字 | \d{3},文本123、456 | \d{3}匹配连续3个数字 |
| \D | 等价[^0-9],匹配非数字 | \D+,文本abc | \D+匹配至少一个非数字字符,如abc |
| \w | 等价[a-zA-Z0-9_],匹配相关字符 | \w+,文本abc、abc123、abc_ | \w+匹配对应字符串 |
| \W | 等价[^a-zA-Z0-9_],匹配其他 | \W,文本& | \W匹配非字母等字符,如& |
| \s | 匹配空白字符 | a\sb,文本a b | a\sb匹配含空白字符串 |
| \S | 匹配非空白字符 | \S+,文本abc | \S+匹配至少一个非空白字符,如abc |