模式匹配在scala中是非常重要的内容,这讲将从正则表达式的角度上,通过模式匹配简化正则表达式的代码。正则表达式在所有开发中都很重要,它描述了一种规则,可以适用很多实例的匹配、过滤,可用于数据清洗,在大数据中有重要的etl步骤,也可以把正则表达式当作是对数据的etl
object RegExpOps {
//生成正则表达式,表达式内容有两部分构成:有若干数字,有若干小写字母。
val regex = """([0-9]+) ([a-z]+)""".r
//正则表达式,匹配若干数字
val numPattern = "[0-9]+".r
//正则表达式,匹配若干数字前面后面可以添加任意内容。
val numberPattern = """\s+[0-9]+\s+""".r
//findAllIn方法返回编译所有匹配的迭代器
for(matchString <- numberPattern.findAllIn("99345 Scala, 22298 Spark")) println(matchString)
//将所有匹配的选项赋值给matchStirng,去打印出来
//找到首个匹配项
println(numberPattern.findFirstIn("99ss java, 222 hadoop"))
val numitemPattern = """([0-9]+) ([a-z]+)""".r
val numitemPattern(num, item) = "99 hadoop"
/*这里有个模式匹配,右侧是字符串,数字赋给num,
小写字母赋给item*/
val line = "93459 spark"
/**
* 模式匹配
*/
line match { //line做输入字符串
case numitemPattern(num, blog) => println(num + "\t" + blog)
/*去和numitemPattern匹配,数字赋给num,
小写字母传给blog,并打印出来*/
case _ => println("That's all")
}
}
}