anchor.diff:                         )
                          ( qs=QSTRING
                            { expr = regex_transform.apply(expr, $qs.text); }
  -                       | re=regex
  -                         { expr = regex_transform.apply(expr, $re.s); }
  +                       | re=REGEX
  +                         { expr = regex_transform.apply(expr, $re.text); }
                          )
                        )
                      )?
  
positive.code:                  : ( s_lit=identifier{ fragments.add(new PathMatcher.LiteralNameMatch($s_lit.s)); }
                     | STAR{ fragments.add(new PathMatcher.WildcardMatch()); }
                     | STAR_STAR{ fragments.add(new PathMatcher.DoubleWildcardMatch()); }
                     | s_regex=regex{ fragments.add(new PathMatcher.RegexMatch($s_regex.s)); }
                     )
                     ( DOT_LIT
                       ( s_lit=identifier{ fragments.add(new PathMatcher.LiteralNameMatch($s_lit.s)); }
                       | STAR{ fragments.add(new PathMatcher.WildcardMatch()); }
                       | STAR_STAR{ fragments.add(new PathMatcher.DoubleWildcardMatch()); }
                       | s_regex=regex{ fragments.add(new PathMatcher.RegexMatch($s_regex.s)); }
                       )
                     )*
                     { $s = new PathMatcher(fragments); }
  
negative.code:                  @after{ $s = new RegexpExpression($s_expr.s, regexp, $s_replacement.text); }
                   : s_expr=expression COMMA_LIT
                     ( s_regexp_str=QSTRING{ regexp = $s_regexp_str.text; }
                     | s_regexp_re=REGEX{ regexp = $s_regexp_re.text; }
                     ) COMMA_LIT
                     s_replacement=QSTRING
                     BRACE_CLOSE_LIT
  