diff --git a/sqlparse/keywords.py b/sqlparse/keywords.py index dd6e5d15..c761fe31 100644 --- a/sqlparse/keywords.py +++ b/sqlparse/keywords.py @@ -158,11 +158,17 @@ def find_delimited_spans(text): # because `re.match` doesn't work with look-behind regexp feature (r'(?<=\.)[A-ZÀ-Ü]\w*', tokens.Name), # .'Name' (r'[A-ZÀ-Ü]\w*(?=\()', tokens.Name), # side effect: change kw to func - (r'-?0x[\dA-F]+', tokens.Number.Hexadecimal), - (r'-?\d+(\.\d+)?E-?\d+', tokens.Number.Float), - (r'(?![_A-ZÀ-Ü])-?(\d+(\.\d*)|\.\d+)(?![_A-ZÀ-Ü])', + # A leading minus is only part of the number if it can't be a binary + # operator, i.e. if it doesn't directly follow an operand (a name, a + # number, a closing bracket or a quoted string or name), so that + # ``1-1`` is lexed as ``1``, ``-``, ``1``. See issue #370. + (r"(?:(?