Latest web development tutorials

Scala Regular Expressions

Scala von Regex - Klasse Pakettypenscala.util.matching reguläre Ausdrücke zu unterstützen.Das folgende Beispiel zeigt die Verwendung von regulären Ausdrücken SuchwortScala:

import scala.util.matching.Regex

object Test {
   def main(args: Array[String]) {
      val pattern = "Scala".r
      val str = "Scala is Scalable and cool"
      
      println(pattern findFirstIn str)
   }
}

Die Umsetzung des obigen Codes ist die Ausgabe:

$ scalac Test.scala 
$ scala Test
Some(Scala)

Beispiele für die Verwendung der String-Klasse r () -Methode ein Regex-Objekt zu konstruieren.

Dann nutzen Sie findFirstIn Weg, um das erste Spiel zu finden.

Wenn Sie alle Spiele zu sehen müssen, können findAllIn Methoden verwendet werden.

Sie können mkString () -Methode verwenden, um einen regulären Ausdruck übereinstimmt, die zu verbinden, und Sie können das Rohr verwenden (|) in verschiedenen Modi einstellen:

import scala.util.matching.Regex

object Test {
   def main(args: Array[String]) {
      val pattern = new Regex("(S|s)cala")  // 首字母可以是大写 S 或小写 s
      val str = "Scala is scalable and cool"
      
      println((pattern findAllIn str).mkString(","))   // 使用逗号 , 连接返回结果
   }
}

Die Umsetzung des obigen Codes ist die Ausgabe:

$ scalac Test.scala 
$ scala Test
Scala,scala

Wenn Sie benötigen , um Textanpassung angegebenen Schlüsselwörter ersetzen, können SiereplaceFirstIn () -Methode verwenden , das erste Spiel zu ersetzen, verwenden replaceAllIn ()Methode ersetzt alle Spiele, Beispiele sind wie folgt:

object Test {
   def main(args: Array[String]) {
      val pattern = "(S|s)cala".r
      val str = "Scala is scalable and cool"
      
      println(pattern replaceFirstIn(str, "Java"))
   }
}

Die Umsetzung des obigen Codes ist die Ausgabe:

$ scalac Test.scala 
$ scala Test
Java is scalable and cool

Reguläre Ausdrücke

Scala Syntax für reguläre Ausdrücke Regeln geerbt Java, Java meisten Regeln der Sprache Perl verwenden.

Die folgende Tabelle gibt uns einige gemeinsame Regeln der regulären Ausdrücke:

Ausdruck Matching-Regel
^ Wer passt zu der Eingabestring beginnt.
$ Passen Sie die Eingangsende der Saitenlage.
. Entspricht einem einzelnen Zeichen außer "\ r \ n".
[...] Zeichensatz. Jedes Zeichen enthalten. Zum Beispiel: "[abc]" passt "plain" in der "a".
[^ ...] Reverse-Zeichensatz. Jedes Zeichen nicht enthalten. Zum Beispiel: "[^ abc]" passt "plain" in der "p", "l", "i", "n".
\\ A Wer passt zu den Eingabestring Startposition (keine Multi-Line-Support)
\\ Z Ende der Schnur ($ ähnlich, aber nicht die Behandlungsmöglichkeiten für mehrere Zeilen betreffen)
\\ Z Ende der Schnur oder das Ende der Leitung (aus der Behandlung auf mehreren Zeilenoptionen)
re * Wiederholte null oder mehrere Male
re + Wiederholt ein oder mehrere Male
re? Wiederholte Null oder Eins mal
re {n} N-mal wiederholt
re {n,}
re {n, m} Wiederholte n zu m mal
a | b Ein Spiel oder b
(Re) Spiel erneut, und erfassen den Text automatisch benannte Gruppe
(: Re) Spiel re, erfasse nicht den passenden Text, noch zu dieser Gruppe zugeordnet Gruppennummer
(?> Re) Greedy Unterausdrücke
\\ W Spiel Buchstaben oder Zahlen oder Unterstrichen oder
\\ W Nicht alle Buchstaben entsprechen, Zahlen, Unterstrichen, chinesische Schriftzeichen
\\ S Entspricht einem beliebigen Leerzeichen, das entspricht [\ t \ n \ r \ f]
\\ S entsprechen keine Leerzeichen
\\ D Passende Zahlen, ähnlich wie [0-9]
\\ D Spiele nicht numerische Zeichen
\\ G Der Beginn der aktuellen Suche
\\ N Newline
\\ B Normalerweise wird eine Wortgrenze Position, aber wenn Sie eine Zeichenklasse verwenden repräsentiert Backspace
\\ B Die Lage ist nicht entsprechen den Anfang oder das Ende eines Wortes
\\ T Tabs
\\ Q BeginnenZitat: \ Q (a + b) * 3 \ E entspricht Text "(a + b) * 3 ".
\\ E EndeZitat: \ Q (a + b) * 3 \ E entspricht Text "(a + b) * 3 ".

Beispiele für reguläre Ausdrücke

Beispiele Beschreibung
. Entspricht einem einzelnen Zeichen außer "\ r \ n".
[Rr] uby Match "Ruby" oder "Ruby"
rub [ihr] Match "Rubin" oder "Rübe"
[Aeiou] Wer passt zu Kleinbuchstaben: aeiou
[0-9] Spiele eine beliebige Ziffer, ähnlich wie [0123456789]
[Az] Spiele alle ASCII-Kleinbuchstaben
[AZ] Entspricht einem beliebigen ASCII Groß
[A-zA-Z0-9] Passende Zahlen, Groß- und Kleinbuchstaben
[^ Aeiou] Zusätzlich zu den passenden anderen Zeichen aeiou
[^ 0-9] Entspricht jedem Zeichen als Zahlen
\\ D Passende Zahlen, wie folgt aus: [0-9]
\\ D Nicht-matching numbers, wie folgt aus: [^ 0-9]
\\ S Spiel Räume ähnlich: [\ t \ r \ n \ f]
\\ S Passende Nicht-Raum, ähnlich wie: [^ \ t \ r \ n \ f]
\\ W Spiel Buchstaben, Zahlen, unterstreicht, ähnlich wie: [A-Za-z0-9_]
\\ W Nicht passende Buchstaben, Zahlen, unterstreicht, ähnlich wie: [^ A-Za-z0-9_]
Rubin? Match "reiben" oder "Ruby": y ist optional
Rubin * Match "reiben" plus null oder mehr von y.
Rubin + Match "rub" plus einem oder mehreren der y.
\\ D {3} Entspricht genau drei Zahlen.
\\ D {3,} Spiel drei oder mehr Ziffern.
\\ D {3,5} Spiel drei, vier oder fünf Zahlen.
\\ D \\ d + Keine Gruppierung: + Wiederholung \ d
(\\ D \\ d) + / Gruppen: + Wiederholung \ D \ d
([Rr] uby (,)?) + Match "Ruby", "Rubin, Rubin, Rubin", usw.

Beachten Sie, dass die obige Tabelle für jedes Zeichen zwei Backslash verwendet. Dies liegt daran, in Java und Scala Backslash in der Zeichenfolge das Escape-Zeichen. Also, wenn Sie ausgeben wollen. \., Müssen Sie in der Zeichenfolge zu schreiben. \\. Einen umgekehrten Schrägstrich zu bekommen. Siehe folgende Beispiele:

import scala.util.matching.Regex

object Test {
   def main(args: Array[String]) {
      val pattern = new Regex("abl[ae]\\d+")
      val str = "ablaw is able1 and cool"
      
      println((pattern findAllIn str).mkString(","))
   }
}

Die Umsetzung des obigen Codes ist die Ausgabe:

$ scalac Test.scala 
$ scala Test
able1