19.Scala中的正则表达式、与模式匹配结合的Reg代码实战

时间:2021-06-25 18:50:23

一、正则表达式代码实战

package ce.scala.pp

object RegexpressOps_19 {
def main(args: Array[String]): Unit = {

val numPattern = "[0-9]+".r
for(matchString <- numPattern.findAllIn("99345 Scala,22298 Spark")) //findAllIn这个方法返回遍历所有匹配项的迭代器
println(matchString) //输出99345 22298

val numberPattern = """\s+[0-9]+\s+""".r //三个引号的意思是里面的内容都是原生的表达 .r就把引号里的内容变成了正则表达式scala.util.matching.Regex
println(numberPattern.findFirstIn("99ss java, 222 hadoop")) //输出Some( 222 ) 返回匹配正则表达式的第一个Option[String]

val numitemPattern = """([0-9]+) ([a-z]+)""".r
val numitemPattern(num, item) = "99 hadoop"
println(num+" " + item) //输出99 hadoop
}
}
输出:

99345
22298
Some( 222 )
99 hadoop


二、与模式匹配结合的Reg代码实战

package ce.scala.pp

object RegexpressOps_19 {
def main(args: Array[String]): Unit = {

 val numitemPattern = """([0-9]+) ([a-z]+)""".r //([0-9]+)和([a-z]+)中间的一个空格也要被匹配上

var line = "93459 spark"
line match{
case numitemPattern(num, item) => println(num + " " + item)
case _ => println("ohh")
}
}
}

输出:

93459 spark

若var line = "9345f9 spark",那么就输出ohh



参考资料来源于 DT大数据梦工厂Scala零基础实战经典第19课 由王家林老师讲解