Scala入门之正则表达式

    xiaoxiao2025-12-08  5

    正则表达式

    Scala支持通过Regex类的scala.util.matching封装正则表达式。 创建一个字符串,并调用r()方法如 val pattern = "Scala".r Scala中字符串隐式转换为一个RichString并调用该方法来获得正则表达式的一个实例。

    代码实战

    package com.dt.scala.moguyun import scala.util.matching.Regex /** * 正则表达式的常用用法 * Created by hlf on 2016/8/15. */ object HelloRegex { def main(args: Array[String]) { //首先要先创建一个正则表达式实例,有两种创建方式 val regex1 = """([0-9]+) ([a-z]+)""".r val regex2 = new Regex("""([0-9]+) ([a-z]+)""") //常见的几种使用方法 // regex1.findAllIn() // regex1.findFirstIn() // regex1.replaceAllIn() // regex1.replaceFirstIn() val content = "9527 scala 007 spark 0359 5718 544 kafka" println("findFirstIn") val r1 =regex1.findFirstIn(content) val r2 =regex1.findFirstIn(content) println("findFirstIn" + r1)//找到一个匹配之后就不再找了,返回的是一个Option[String] println("findFirstIn" + r2) println("findAllIn") val r3 = regex1.findAllIn(content)//找到所有匹配的,返回的是一个MatchIterator //遍历时用for循环,不过要使用赋值的方式,将结果赋值给变量 for(regex1(num,str)<-r3) println("findAllIn" + num + ":" + str) println("使用match") content match { case regex1(num,str) => println("findAllIn" + num + ":" + str) case _ => println(" No Match") } //上面会显示的是 No Match,因为得到的是一个集合,而赋值只能是给一个赋值,所以用下面的方式才不会报错 "9527 scala" match { case regex1(num,str) => println( num + ":" + str) case _ => println(" No Match") } } } 结果 findFirstIn findFirstInSome(9527 scala) findFirstInSome(9527 scala) findAllIn findAllIn9527:scala findAllIn007:spark findAllIn544:kafka 使用match No Match 9527:scala

    感谢[DT大数据梦工厂]首席专家Spark专家王家林老师的课程分享。更多精彩内容请扫描关注[DT大数据梦工厂]微信公众号DT_Spark

    转载请注明原文地址: https://ju.6miu.com/read-1304723.html
    最新回复(0)