Frage

Meine scala Version 2.7.7

Im Versuch, eine E-Mail-Adresse aus einer größeren Zeichenfolge zu extrahieren. die Zeichenfolge selbst folgt kein Format. der Code, den ich habe:

import scala.util.matching.Regex
import scala.util.matching._
val Reg = """\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b""".r
"yo my name is joe : joe@gmail.com" match {
    case Reg(e) => println("match: " + e)
    case _ => println("fail")
}

geht die Regex in RegexBuilder aber nicht passieren für scala. Auch wenn es eine andere Möglichkeit, dies zu tun, ohne Regex, die feinen auch sein würde. Dank!

War es hilfreich?

Lösung

Als Alan Moore wies darauf hin, müssen Sie die (?i) an den Anfang des Musters hinzufügen, um es Groß- und Kleinschreibung zu machen. Beachten Sie auch, dass der Regex direkt paßt die gesamte Zeichenfolge verwendet wird. Wenn Sie in einer größeren Zeichenfolge finden möchten, können Sie findFirstIn() oder die Verwendung einer der ähnlichen Methoden der Regex nennen.

val reg = """(?i)\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b""".r
reg findFirstIn "yo my name is joe : joe@gmail.com"  match {
    case Some(email) => println("match: " + email)
    case None => println("fail")
}

Andere Tipps

Es sieht aus wie Sie versuchen, eine Groß- und Kleinschreibung Suche zu tun, aber Sie angeben nicht, dass überall. Versuchen Sie, (?i) zum Anfang der Regex:

"""(?i)\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b""".r

Nun, zu tun, die Möglichkeiten, es anders als REs ist wahrscheinlich viel unordentlicher. Der nächste Schritt würde wahrscheinlich das ein combinator Parser. Viele zufällige Zeichenfolge Dissektion Code wäre noch allgemeinere und mit ziemlicher Sicherheit eine ganze Menge mehr schmerzhaft. Im zweiten Teil, was eine geeignete Taktik hängt davon ab, wie vollständig (und wie streng oder nachsichtig) Ihre Erkennungs sein muss. Zum Beispiel der gemeinsame Form: Rudolf Reindeer <rudy.caribou@north_pole.rth> nicht von Ihrem RE akzeptiert wird (auch nach der Fall-Empfindlichkeit wird entspannt). Ausgewachsene RFC 2822 Adresse Parsing ist eher eine Herausforderung für einen RE-basierten Ansatz.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top