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


Scala Regex.unapplySeq用法及代碼示例


unapplySeq 方法(或屬性)屬於util.matching.Regex類(class),其相關用法說明如下。

用法 一

def unapplySeq(s: CharSequence): Option[List[String]]

嘗試匹配 java.lang.CharSequence.

如果匹配成功,則結果是匹配組的列表(如果組不匹配任何輸入,則為 null 元素)。如果模式未指定任何組,則結果將是成功匹配的空列表。

該方法默認嘗試匹配整個輸入;要查找下一個匹配子序列,請使用未錨定的 Regex

例如:

val p1 = "ab*c".r
val p1Matches = "abbbc" match {
  case p1() => true               // no groups
  case _    => false
}
val p2 = "a(b*)c".r
val p2Matches = "abbbc" match {
  case p2(_*) => true             // any groups
  case _      => false
}
val numberOfB = "abbbc" match {
  case p2(b) => Some(b.length)    // one group
  case _     => None
}
val p3 = "b*".r.unanchored
val p3Matches = "abbbc" match {
  case p3() => true               // find the b's
  case _    => false
}
val p4 = "a(b*)(c+)".r
val p4Matches = "abbbcc" match {
  case p4(_*) => true             // multiple groups
  case _      => false
}
val allGroups = "abbbcc" match {
  case p4(all @ _*) => all mkString "/" // "bbb/cc"
  case _            => ""
}
val cGroup = "abbbcc" match {
  case p4(_, c) => c
  case _        => ""
}

值參數:

s

要匹配的字符串

返回:

比賽

源碼:

Regex.scala

用法 二

def unapplySeq(c: Char): Option[List[Char]]

嘗試匹配 scala.Char 的字符串表示.

如果匹配成功,則如果定義了任何組,則結果為第一個匹配組,否則為空序列。

例如:

val cat = "cat"
// the case must consume the group to match
val r = """(\p{Lower})""".r
cat(0) match { case r(x) => true }
cat(0) match { case r(_) => true }
cat(0) match { case r(_*) => true }
cat(0) match { case r() => true }     // no match

// there is no group to extract
val r = """\p{Lower}""".r
cat(0) match { case r(x) => true }    // no match
cat(0) match { case r(_) => true }    // no match
cat(0) match { case r(_*) => true }   // matches
cat(0) match { case r() => true }     // matches

// even if there are multiple groups, only one is returned
val r = """((.))""".r
cat(0) match { case r(_) => true }    // matches
cat(0) match { case r(_,_) => true }  // no match

值參數:

c

要匹配的字符

返回:

比賽

源碼:

Regex.scala

用法 三

def unapplySeq(m: Match): Option[List[String]]

嘗試匹配 scala.util.matching.Regex.Match.

先前失敗的匹配結果為無。

如果對當前模式進行了成功匹配,則使用該結果。

否則,此 Regex 將應用於先前匹配的輸入,並使用該匹配的結果。

源碼:

Regex.scala

相關用法


注:本文由純淨天空篩選整理自scala-lang.org大神的英文原創作品 Regex.unapplySeq。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。