in src/main/java/com/intellij/internal/statistic/eventLog/validator/rules/utils/ValidationSimpleRuleFactory.java [163:198]
public static List<String> parseSimpleExpression(@NotNull String s) {
int currentRuleStart = s.indexOf(START);
if (StringUtil.isEmptyOrSpaces(s)) return Collections.emptyList();
if (currentRuleStart == -1) return Collections.singletonList(s);
int lastRuleEnd = -1;
final List<String> nodes = new ArrayList<>();
if (currentRuleStart > 0) addNonEmpty(nodes, s.substring(0, currentRuleStart));
while (currentRuleStart >= 0) {
int currentRuleEnd;
int nextRule;
if (s.startsWith("regexp:", currentRuleStart + START.length())) {
currentRuleEnd = getPairBracket(s,currentRuleStart);
nextRule = s.indexOf(START, currentRuleEnd);
}else{
currentRuleEnd = s.indexOf(END, currentRuleStart);
nextRule = s.indexOf(START, currentRuleStart + START.length());
}
if (currentRuleEnd == -1) return Collections.emptyList();
lastRuleEnd = currentRuleEnd + END.length();
// check invalid '{aaa{bb}', but valid '{regexp:aa{b}}' and '{regexp:aa}bb'
if (nextRule > 0 && nextRule < lastRuleEnd)
return Collections.emptyList();
addNonEmpty(nodes, s.substring(currentRuleStart, lastRuleEnd));
currentRuleStart = s.indexOf(START, lastRuleEnd);
if (currentRuleStart > 0) addNonEmpty(nodes, s.substring(lastRuleEnd, currentRuleStart));
}
if (lastRuleEnd > 0) addNonEmpty(nodes, s.substring(lastRuleEnd));
return nodes;
}