Scala入門之正則表達式

正則表達式

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章