public static MatchData matchStringRegex(@NotNull Constants.StringKey keyName,
                                           @NotNull StringWithId string,
                                           int byteOffset,
                                           int anchorOffset,
                                           boolean matchBeginOfString,
                                           @NotNull TextMateLexerState lexerState) {
    CharSequence regex = lexerState.syntaxRule.getStringAttribute(keyName);
    if (regex == null) return MatchData.NOT_MATCHED;
    String regexString = lexerState.syntaxRule.hasBackReference(keyName)
                         ? replaceGroupsWithMatchDataInRegex(regex, lexerState.string, lexerState.matchData)
                         : regex.toString();
    return regex(regexString).match(string, byteOffset, anchorOffset, matchBeginOfString, ourCheckCancelledCallback);
  }
public static MatchData matchStringRegex(@NotNull Constants.StringKey keyName,
                                           @NotNull StringWithId string,
                                           int byteOffset,
                                           int anchorOffset,
                                           boolean matchBeginOfString,
                                           @NotNull TextMateLexerState lexerState)