[refactor][perf] cache compiled regex pattern (#10099)

(cherry picked from commit 5161df04d7)
This commit is contained in:
youzipi 2022-05-21 10:36:42 +08:00 committed by Jiajie Zhong
parent 68e6e45bb8
commit 69a76e8658

View File

@ -40,9 +40,8 @@ import java.util.regex.Pattern;
* parameter parse utils
*/
public class ParameterUtils {
private static final String DATE_PARSE_PATTERN = "\\$\\[([^\\$\\]]+)]";
private static final String DATE_START_PATTERN = "^[0-9]";
private static final Pattern DATE_PARSE_PATTERN = Pattern.compile("\\$\\[([^\\$\\]]+)]");
private static final Pattern DATE_START_PATTERN = Pattern.compile("^[0-9]");
private ParameterUtils() {
throw new UnsupportedOperationException("Construct ParameterUtils");
@ -165,15 +164,15 @@ public class ParameterUtils {
if (templateStr == null) {
return null;
}
Pattern pattern = Pattern.compile(DATE_PARSE_PATTERN);
StringBuffer newValue = new StringBuffer(templateStr.length());
Matcher matcher = pattern.matcher(templateStr);
Matcher matcher = DATE_PARSE_PATTERN.matcher(templateStr);
while (matcher.find()) {
String key = matcher.group(1);
if (Pattern.matches(DATE_START_PATTERN, key)) {
if (DATE_START_PATTERN.matcher(key).matches()) {
continue;
}
String value = TimePlaceholderUtils.getPlaceHolderTime(key, date);