サーチ…


構文

  • re.findAllIn(s:CharSequence):MatchIterator
  • re.findAllMatchIn(s:CharSequence):反復子[マッチ]
  • re.findFirstIn(s:CharSequence):オプション[文字列]
  • re.findFirstMatchIn(s:CharSequence):オプション[Match]
  • re.findPrefixMatchIn(s:CharSequence):オプション[Match]
  • re.findPrefixOf(s:CharSequence):オプション[文字列]
  • re.replaceAllIn(s:CharSequence、Replacer:Match => String):String
  • re.replaceAllIn(s:CharSequence、replacement:String):String
  • re.replaceFirstIn(s:CharSequence、replacement:String):String
  • re.replaceSomeIn(s:CharSequence、Replacer:Match =>オプション[文字列]):文字列
  • re.split(s:CharSequence):Array [文字列]

正規表現の宣言

scala.collection.immutable.StringOpsを介して暗黙的に提供されるrメソッドは、件名文字列からscala.util.matching.Regexのインスタンスを生成します。 Scalaの三重引用符で囲まれた文字列構文は、Javaの場合と同じようにバックスラッシュをエスケープする必要がないので、ここでは便利です。

val r0: Regex = """(\d{4})-(\d${2})-(\d{2})""".r     // :)
val r1: Regex = "(\\d{4})-(\\d{2})-(\\d{2})".r // :(

scala.util.matching.Regexは java.util.regex.PatternのラッパーとしてScala用の慣用正規表現APIを実装しており、サポートされている構文は同じです。つまり、Scalaは複数行の文字列リテラルをサポートしているため、 xフラグは実質的により便利になり、コメントを有効にしてパターン空白を無視します。

val dateRegex = """(?x:
   (\d{4}) # year
  -(\d{2}) # month
  -(\d{2}) # day
)""".r

オーバーロードされたバージョンのrdef r(names: String*): Regexパターンマッチにグループ名を割り当てることができるdef r(names: String*): Regexあります。名前とキャプチャの関連付けが解除されるため、これはやや脆弱です。正規表現が複数の場所で使用される場合にのみ使用してください。

"""(\d{4})-(\d{2})-(\d{2})""".r("y", "m", "d").findFirstMatchIn(str) match {
  case Some(matched) =>
    val y = matched.group("y").toInt
    val m = matched.group("m").toInt
    val d = matched.group("d").toInt
    java.time.LocalDate.of(y, m, d)
  case None => ???
}

文字列内のパターンの繰り返し一致

val re = """\((.*?)\)""".r

val str = "(The)(example)(of)(repeating)(pattern)(in)(a)(single)(string)(I)(had)(some)(trouble)(with)(once)"

re.findAllMatchIn(str).map(_.group(1)).toList
res2: List[String] = List(The, example, of, repeating, pattern, in, a, single, string, I, had, some, trouble, with, once)


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow