这个是官方文档上的例子,搬运一下
链接放这了,想要学习的小伙伴可以看一下 https://www.scala-lang.org/files/archive/nightly/2.11.x/api/2.11.x/#scala.util.matching.Regex
val re = """(\d{4})-(\d{2})-(\d{2})""".r
val dates = "Important dates in history: 2004-01-20, 1958-09-05, 2010-10-06, 2011-07-15"
val firstDate = re findFirstIn dates getOrElse "No date found."
// 上面的表达形式与下面的写法效果一致
// val firstDate = re.findFirstIn(dates).getOrElse("No date found.")
println(firstDate)
- findFirstIn 返回匹配中的第一个值,getOrElse-当没有匹配到值返回给定的默认值,这里是 “No date found”
- 输出结果

如果想取出字符串中所有的年份呢?(瞅瞅下面)
val firstYear = for (m <- re findAllMatchIn dates) yield m group 1
println(firstYear.toBuffer)
- group(1) 取到的是正则中的第一组,也就是(\d{4}),也就是年份
- yield 列表推导式(雾,我也不知道scala里面怎么叫) 返回的是一个可迭代器
-
输出结果如下
image.png
网友评论