当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Scala Regex.findAllIn用法及代码示例


findAllIn 方法(或属性)属于util.matching.Regex类(class),其相关用法说明如下。

用法:

def findAllIn(source: CharSequence): MatchIterator

返回给定字符序列中此 Regex 的所有非重叠匹配作为 scala.util.matching.Regex.MatchIterator ,这是一个特殊的 scala.collection.Iterator ,它返回匹配的字符串,但也可以查询有关最后一个匹配的更多数据,例如捕获组和起始位置.

MatchIterator 也可以转换为返回类型为 scala.util.matching.Regex.Match 的对象的迭代器,例如通常由 findAllMatchIn 返回的对象。

如果潜在匹配重叠,则返回第一个可能的匹配,然后是第一个匹配所消耗的输入之后的下一个匹配:

val hat  = "hat[^a]+".r
val hathaway = "hathatthattthatttt"
val hats = hat.findAllIn(hathaway).toList                     // List(hath, hattth)
val pos  = hat.findAllMatchIn(hathaway).map(_.start).toList   // List(0, 7)

要返回重叠匹配,可以使用不占用重叠区域的前瞻 (?=) 来制定正则表达式。

val madhatter = "(h)(?=(at[^a]+))".r
val madhats   = madhatter.findAllMatchIn(hathaway).map {
  case madhatter(x,y) => s"$x$y"
}.toList                                       // List(hath, hatth, hattth, hatttt)

在用尽迭代器后尝试检索匹配信息会导致 java.lang.IllegalStateException 。有关详细信息,请参阅scala.util.matching.Regex.MatchIterator

值参数:

source

要匹配的文本。

返回:

A scala.util.matching.Regex.MatchIterator 个匹配的子字符串.

例子:

for (words <- """\w+""".r findAllIn "A simple example.") yield words

源码:

Regex.scala

相关用法


注:本文由纯净天空筛选整理自scala-lang.org大神的英文原创作品 Regex.findAllIn。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。