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


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。