Scala Pattern Match之Regular Expressions

Scala Pattern Match之Regular Expressions

Scala正则表达式,如下是正则表达式的定义和使用,

scala> val regex="""([0-9]+)([a-z]+)""".r
regex: scala.util.matching.Regex = ([0-9]+)([a-z]+)

scala> val str = "1618lyx"
str: String = 1618lyx

scala> val regex(num,name) = str
num: String = 1618
name: String = lyx

将匹配的结果赋值给num 和 name。

在构造Regex的时候使用到String类的r方法,我们也可以直接使用Regex类进行:

scala> import scala.util.matching._
import scala.util.matching._

scala> 

scala> val regex = new Regex("""([0-9]+)([a-z]+)""")
regex: scala.util.matching.Regex = ([0-9]+)([a-z]+)

scala> val regex(num, blog) = str
num: String = 1618
blog: String = lyx

scala>

下面来看一下正则表达式在模式匹配中的应用,

//r 方法表示创建一个正则表达式
val BookExtractorRE =
  """Book:title=([^,]+),\s+author=(.+)""".r

val MagazineExtractorRE = """Magazine:title=([^,]+),\s+issue=(.+)""".r

val catalog = Seq(
  "Book:title=Programming Scala Second Edition,author=Dean Wampler",
  "Magazine:title=The New York,issue=January 2014",
  "Unknown:text=who put this here?"
)

/**
  * BookExtractorRE 是一个正则表达式,可以将匹配的字符串赋值给title,author
  * 在case部分就可以取到匹配到的变量
  * entry :表示没有匹配的变量
  *
  * 对于大量转义字符及换行的字符串可以使用三个双引号
  * 三个双引号的字符串可以将换行符输出
  */
for (item <- catalog) {
  item match {
    case BookExtractorRE(title, author) => println(
      s"""Book $title,
         written by $author""")
    case MagazineExtractorRE(title, issue) => println(s"""Magazine "title" ,issue $issue""")
    case entry => println(s"Unrecognized entry:$entry")

  }
}

==========END==========

转载于:https://my.oschina.net/xinxingegeya/blog/636218

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值