Since a Matcher coerces to a boolean by calling its find method, the =~ operator is consistent with the simple use of Perl's =~ operator, when it appears as a predicate (in 'if', 'while', etc.). The "stricter-looking" ==~ operator requires an exact match of the whole subject string.
def matcher = "\$abc." =~ /\$(.*)\./ // no need to double-escape!
assert "\\\$(.*)\\." == /\$(.*)\./
matcher.matches(); // must be invoked
assert matcher.group(1) == "abc" // is one, not zero
def m = "foobarfoo" =~ /o(b.*r)f/
assert m[0][1] == "bar"
// fancier group demo
matcher = "\$abc." =~ "\\\$(.*)\\."
matcher.matches(); // must be invoked [Question: is this still true? Not in my experience with jsr-04.]
assert matcher.group(1) == "abc" // is one, not zero