From 752100443bd1a5ddd81d57166db887c1fbd9f7ef Mon Sep 17 00:00:00 2001 From: Victor Uriarte Date: Fri, 3 Jun 2016 11:36:07 -0700 Subject: Simplify regex [^\W\d_] [^\W\d_] = [a-z] (when ignoring case) not( not (a-z, numbers, or _) or number or _ ) [(a-z or number or _) and not number and not _] [A-Z] Correct not null spacing --- sqlparse/keywords.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'sqlparse') diff --git a/sqlparse/keywords.py b/sqlparse/keywords.py index fb2f042..1b5d5f2 100644 --- a/sqlparse/keywords.py +++ b/sqlparse/keywords.py @@ -33,7 +33,7 @@ SQL_REGEX = { (r"`(``|[^`])*`", tokens.Name), (r"´(´´|[^´])*´", tokens.Name), - (r'\$([^\W\d]\w*)?\$', tokens.Name.Builtin), + (r'\$([_A-Z]\w*)?\$', tokens.Name.Builtin), (r'\?', tokens.Name.Placeholder), (r'%(\(\w+\))?s', tokens.Name.Placeholder), @@ -45,8 +45,11 @@ SQL_REGEX = { # is never a functino, see issue183 (r'(CASE|IN|VALUES|USING)\b', tokens.Keyword), - (r'(@|##|#)[^\W\d_]\w+', tokens.Name), - (r'[^\W\d_]\w*(?=[.(])', tokens.Name), # see issue39 + (r'(@|##|#)[A-Z]\w+', tokens.Name), + (r'[A-Z]\w*(?=\.)', tokens.Name), # see issue39 + (r'(?<=\.)[A-Z]\w*', tokens.Name), # .'Name' + (r'[A-Z]\w*(?=\()', tokens.Name), # side effect: change kw to func + (r'[-]?0x[0-9a-fA-F]+', tokens.Number.Hexadecimal), (r'[-]?[0-9]*(\.[0-9]+)?[eE][-]?[0-9]+', tokens.Number.Float), (r'[-]?[0-9]*\.[0-9]+', tokens.Number.Float), @@ -61,11 +64,12 @@ SQL_REGEX = { (r'((LEFT\s+|RIGHT\s+|FULL\s+)?(INNER\s+|OUTER\s+|STRAIGHT\s+)?' r'|(CROSS\s+|NATURAL\s+)?)?JOIN\b', tokens.Keyword), (r'END(\s+IF|\s+LOOP|\s+WHILE)?\b', tokens.Keyword), - (r'NOT NULL\b', tokens.Keyword), + (r'NOT\s+NULL\b', tokens.Keyword), (r'CREATE(\s+OR\s+REPLACE)?\b', tokens.Keyword.DDL), (r'DOUBLE\s+PRECISION\b', tokens.Name.Builtin), - (r'(?<=\.)[^\W\d_]\w*', tokens.Name), - (r'[^\W\d]\w*', is_keyword), + + (r'[_A-Z]\w*', is_keyword), + (r'[;:()\[\],\.]', tokens.Punctuation), (r'[<>=~!]+', tokens.Operator.Comparison), (r'[+/@#%^&|`?^-]+', tokens.Operator), -- cgit v1.2.1