protected static function parseExpression($expression)
{
if (isset(self::$operators[$expression[0]])) {
$operator = $expression[0];
$expression = substr($expression, 1);
} else {
$operator = '';
}
$explodedExpression = explode(',', $expression);
foreach ($explodedExpression as &$expressionPart) {
$configuration = [];
$expressionPart = trim($expressionPart);
$colonPosition = strpos($expressionPart, ':');
if ($colonPosition) {
$configuration['value'] = substr($expressionPart, 0, $colonPosition);
$configuration['modifier'] = ':';
$configuration['position'] = (int) substr($expressionPart, $colonPosition + 1);
} elseif (substr($expressionPart, -1) === '*') {
$configuration['modifier'] = '*';
$configuration['value'] = substr($expressionPart, 0, -1);
} else {
$configuration['value'] = (string) $expressionPart;
$configuration['modifier'] = '';
}
$expressionPart = $configuration;
}
return ['operator' => $operator, 'values' => $explodedExpression];
}