Scala Language
Vanliga uttryck
Sök…
Syntax
- re.findAllIn (s: CharSequence): MatchIterator
- re.findAllMatchIn (s: CharSequence): Iterator [Match]
- re.findFirstIn (s: CharSequence): Alternativ [String]
- re.findFirstMatchIn (s: CharSequence): Alternativ [Matcha]
- re.findPrefixMatchIn (s: CharSequence): Alternativ [Matcha]
- re.findPrefixOf (s: CharSequence): Alternativ [String]
- re.replaceAllIn (s: CharSequence, ersättare: Match => String): String
- re.replaceAllIn (s: CharSequence, ersättning: String): String
- re.replaceFirstIn (s: CharSequence, ersättning: String): String
- re.replaceSomeIn (s: CharSequence, ersättare: Match => Alternativ [String]): String
- re.split (s: CharSequence): Array [String]
Förklara regelbundna uttryck
Metoden r
tillhandahålls implicit via scala.collection.immutable.StringOps producerar en instans av scala.util.matching.Regex från ämnessträngen . Skalas tredubblerade citerade strängsyntax är användbar här, eftersom du inte behöver undgå backstänk som du skulle göra i 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 implementerar ett idiomatiskt API för reguljärt uttryck för Scala som en omslag över java.util.regex.Pattern , och den stödda syntaxen är densamma. Med det sagt säger Skalas stöd för flerstrengade bokstäver x
flaggan väsentligen mer användbar, vilket möjliggör kommentarer och ignorerar mönstervitrum:
val dateRegex = """(?x:
(\d{4}) # year
-(\d{2}) # month
-(\d{2}) # day
)""".r
Det finns en överbelastad version av r
, def r(names: String*): Regex
som låter dig tilldela gruppnamn till dina mönsterupptagningar. Detta är något sprött eftersom namnen tas bort från tagningarna och bör endast användas om det reguljära uttrycket kommer att användas på flera platser:
"""(\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 => ???
}
Upprepa matchning av ett mönster i en sträng
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)