There are a few concepts to get familiar with before getting to grips with kantan.regex proper.
First, regular expression literals: regular expressions that are validated at compile time. This is the preferred way of creating regular expressions and will be used throughout the documentation, so it’s best to get that out of the way as soon as possible.
There are various ways of enabling the feature, the simplest and most common one being to import
kantan.regex.implicits._
:
import kantan.regex.implicits._
This will also bring kantan.regex syntax in scope though, so if you only want the literals, you can simply import
kantan.regex.literals._
.
This lets you create new regular expression by prefixing string literals with rx
:
rx"\d+"
// res0: java.util.regex.Pattern = \d+
rx"[ -~]"
// res1: java.util.regex.Pattern = [ -~]
And, as promised, this fails at compile time if the regular expression is not valid:
rx"[abc"
// error: Illegal regex: '[abc'
// rx"[abc"
// ^^^^^^^^
Subsequent pages will get into more details, but the simplest, most idiomatic way of extracting well typed data from
strings using kantan.regex is through the evalRegex
method that enriches strings (since we’ve imported
kantan.regex.implicits._
). For example:
"123 and some text followed by 456 and then 789".evalRegex[Int](rx"\d+").foreach(println _)
// Right(123)
// Right(456)
// Right(789)