當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。