Groovy Operators

Control Statements

Groovy File Handling

Groovy Error & Exceptions

Groovy Multithreading

Groovy Synchronization

Groovy - Regular Expressions



A regular expression is a pattern that is used to find substrings in text. Groovy supports regular expressions natively using the ~regex expression. The text enclosed within the quotations represent the expression for comparison.

For example we can create a regular expression object as shown below −

def regex = ~'Groovy'

When the Groovy operator =~ appears as a predicate (expression returning a Boolean) in if and while statements (see Chapter 8), the String operand on the left is matched against the regular expression operand on the right. Hence, each of the following delivers the value true.

When defining regular expression, the following special characters can be used −

  • There are two special positional characters that are used to denote the beginning and end of a line: caret () and dollar sign ($).

  • Regular expressions can also include quantifiers. The plus sign (+) represents one or more times, applied to the preceding element of the expression. The asterisk (*) is used to represent zero or more occurrences. The question mark (?) denotes zero or once.

  • The metacharacter { and } is used to match a specific number of instances of the preceding character.

  • In a regular expression, the period symbol (.) can represent any character. This is described as the wildcard character.

  • A regular expression may include character classes. A set of characters can be given as a simple sequence of characters enclosed in the metacharacters [and] as in [aeiou]. For letter or number ranges, you can use a dash separator as in [az] or [amAM]. The complement of a character class is denoted by a leading caret within the square rackets as in [az] and represents all characters other than those specified. Some examples of Regular expressions are given below

Example - Using find (=~) operator

find operator checks if given regular expression matches any part of the string. If match found, it returns true else it returns false.

Example.groovy

def text = "Groovy is a powerful and rich programming language"
def regex = "power.*"

def matcher = text =~ regex

if (matcher) {
   println "Found a match!"
   // print the first match found
   println "Matched text: ${matcher[0]}" 
} else {
   println "No match."
}

Output

When we run the above program, we will get the following result.

Found a match!
Matched text: powerful and rich programming language

Example - Using match (==~) operator

match operator checks if given regular expression matches entire string. If entire string matches the regular expression, it returns true else it returns false.

Example.groovy

def text = "Groovy"
def textExactMatch = "Groovy"
def textPartialMatch = "Groo"

println text ==~ textExactMatch
println text ==~ textPartialMatch

Output

When we run the above program, we will get the following result.

true
false
Advertisements