protected function getOperatorsForRegex(array $operators, $delimiter = '/')
{
// escape operators for use in regex
$delimiter = array_fill(0, count($operators), $delimiter);
$escaped = array_map('preg_quote', $operators, $delimiter);
$operators = array_combine($operators, $escaped);
// ignore + & - for now, they'll get special treatment
unset($operators['+'], $operators['-']);
// dot can not just immediately follow a number; it can be confused for
// decimal point, or calling a method on it, e.g. 42 .toString()
$operators['.'] = '(?<![0-9]\\s)\\.';
// don't confuse = with other assignment shortcuts (e.g. +=)
$chars = preg_quote('+-*\\=<>%&|');
$operators['='] = '(?<![' . $chars . '])\\=';
return $operators;
}