@Override
    public Object parse(SourceData sourceData, int rowIndex, Context context) {
        if (inputStringParser == null || patternStringParser == null || indexIntegerParser == null) {
            return null;
        }
        String inputString = OperatorTools.parseString(inputStringParser.parse(sourceData, rowIndex, context));
        String patternString = OperatorTools.parseString(patternStringParser.parse(sourceData, rowIndex, context));
        int indexInteger =
                OperatorTools.parseBigDecimal(indexIntegerParser.parse(sourceData, rowIndex, context)).intValue();
        if (indexInteger < 0) {
            return null;
        }
        Pattern pattern = Pattern.compile(patternString);
        Matcher matcher = pattern.matcher(inputString);
        if (matcher.find()) {
            if (indexInteger <= matcher.groupCount()) {
                return matcher.group(indexInteger);
            }
        }
        return null;
    }
RegexpExtractFunction  ->  REGEXP_EXTRACT(str, regexp [, extractIndex])
description:
- Return NULL if any of the arguments are NULL or invalid
- Return a string from 'str' which extracted with a specified regexp expression 'regexp' and a regexp match group
index 'extractIndex'.
Note: 'regexp' must be a Java regular expression. 'extractIndex' indicates which regexp group to extract and starts
from 1, also the default value if not specified. 0 means matching the entire 'regexp' expression.In addition,
the regexp match group index should not exceed the number of the defined groups
inlong-sdk/transform-sdk/src/main/java/org/apache/inlong/sdk/transform/process/function/string/RegexpExtractFunction.java