Scala入门之正则表达式

来源:互联网 发布:北通手柄 mac设置 编辑:程序博客网 时间:2024/06/06 00:33

正则表达式

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

代码实战

package com.dt.scala.moguyunimport 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")    }  }}结果findFirstInfindFirstInSome(9527 scala)findFirstInSome(9527 scala)findAllInfindAllIn9527:scalafindAllIn007:sparkfindAllIn544:kafka使用match No Match9527:scala

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

0 0
原创粉丝点击