Scala Regex, R Examples: findFirstMatchInUse the Regex class to match patterns. Call findFirstMatchIn and other methods.
dot net perls

R, Regex. Some text operations are simple. We compare a string. We test a character. But for complex things, a Regex provides more power and is more effective.

With r, a function on strings, we create a regular expression from a string (a pattern). We then invoke methods that find matches on that pattern.

FindFirstMatchIn example. Here we create a Regex object from a pattern string with r(). Please note how we specify the Regex pattern—we use three quotes, which is a raw string literal.

For We use a for-loop over the strings in our list. We call findFirstMatchIn on each string.



Result The Regex matches strings that have one or more digits followed by the word "pounds."

Scala program that uses r, findFirstMatchIn
// Get Regex from this string. val test = """\d* pounds""".r // A list of strings to match. val data = List("20 pounds", "5 pounds", "Error") // Loop over strings in the list. for (v <- data) { // Try to match the strings. val result = test.findFirstMatchIn(v) if (result.isDefined) { println(v + " = true") } else { println(v + " = false") } }
20 pounds = true 5 pounds = true Error = false

Groups. These help us label and access parts of a string. We use parentheses around the parts of our Regex we want to be placed in groups. And we pass group names to the r() method.

Result We test isDefined to see if the option has an inner value. We use "get" to access the inner Regex.

And We call the group() function, with string arguments, to access the named groups from our Regex object.

Scala program that uses Regex groups
// An example string. val animals = "cat and dog" // Match words surrounding "and" and give them group names. val result = """(\w+) and (\w+)""".r( "animal1", "animal2").findFirstMatchIn(animals) // See if match occurred. if (result.isDefined) { // Get the Regex. val regex = result.get // Get named groups and display them. val animal1 = regex.group("animal1") val animal2 = regex.group("animal2") println(animal1) println(animal2) }
cat dog

FindAllIn. This program uses findAllIn to get a MatchIterator from a Regex. Here we match all substrings in the string that start with a lowercase "a" or "b" and are followed by 2 digits.

For We use a for-in loop to iterate over the results of MatchIterator. We access and print each string match.

Scala program that uses findAllIn
// Contains space-separated ID codes. val ids = "a_1 a21 a31 b21 b_3 c10" // Match all occurrences starting with "a" or "b" and with 2 digits. val result = """[ab]\d\d""".r.findAllIn(ids) // Iterate over our result. // ... This accesses the Regex.MatchIterator. for (r <- result) { println(r) }
a21 a31 b21

A summary. Scala provides pattern matching for variables with the "match" keyword. But for text, we can use regular expressions. We create them with the r() function.


© 2007-2021 sam allen. send bug reports to info@dotnetperls.com.