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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值