Suche…


Syntax

  • re.findAllIn (s: CharSequence): MatchIterator
  • re.findAllMatchIn (s: CharSequence): Iterator [Match]
  • re.findFirstIn (s: CharSequence): Option [String]
  • re.findFirstMatchIn (s: CharSequence): Option [Match]
  • re.findPrefixMatchIn (s: CharSequence): Option [Match]
  • re.findPrefixOf (s: CharSequence): Option [String]
  • re.replaceAllIn (s: CharSequence, Ersetzer: Match => String): String
  • re.replaceAllIn (s: CharSequence, Ersetzung: String): String
  • re.replaceFirstIn (s: CharSequence, Ersetzung: String): String
  • re.replaceSomeIn (s: CharSequence, Ersetzer: Match => Option [String]): String
  • re.split (s: CharSequence): Array [String]

Reguläre Ausdrücke deklarieren

Die r Methode, die implizit über scala.collection.immutable.StringOps bereitgestellt wird, erzeugt eine Instanz von scala.util.matching.Regex aus der Betreffzeichenfolge. Die dreifach zitierte Stringsyntax von Scala ist hier hilfreich, da Sie Backslashes nicht wie in Java umgehen müssen:

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

scala.util.matching.Regex implementiert eine idiomatische API für reguläre Ausdrücke für Scala als Wrapper über java.util.regex.Pattern . Die unterstützte Syntax ist dieselbe. Die Unterstützung von Scala für mehrzeilige String-Literale macht das x Flag jedoch wesentlich nützlicher, indem Kommentare aktiviert und Muster-Whitespace ignoriert werden:

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

Es gibt eine überladene Version von r , def r(names: String*): Regex , mit dem Sie Ihren Pattern-Captures Gruppennamen zuweisen können. Dies ist etwas spröde, da die Namen von den Captures getrennt werden und sollten nur verwendet werden, wenn der reguläre Ausdruck an mehreren Stellen verwendet wird:

"""(\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 => ???
}

Wiederholen des Abgleichs eines Musters in einer Zeichenfolge

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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow