Skip to content

Commit c500f09

Browse files
committed
improve aql regex
1 parent a4e8cda commit c500f09

File tree

2 files changed

+15
-6
lines changed

2 files changed

+15
-6
lines changed
Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
1+
from app.translator.core.custom_types.values import ValueType
2+
13
UTF8_PAYLOAD_PATTERN = r"UTF8\(payload\)"
2-
NUM_VALUE_PATTERN = r"(?P<num_value>\d+(?:\.\d+)*)"
3-
SINGLE_QUOTES_VALUE_PATTERN = (
4-
r"""'(?P<s_q_value>(?:[:a-zA-Zа-яА-Я\*0-9=+%#\-\/\\|,;_<>`~".$&^@!?\(\)\{\}\[\]\s]|'')*)'""" # noqa: RUF001
5-
)
4+
NUM_VALUE_PATTERN = rf"(?P<{ValueType.number_value}>\d+(?:\.\d+)*)"
5+
SINGLE_QUOTES_VALUE_PATTERN = rf"""'(?P<{ValueType.single_quotes_value}>(?:[:a-zA-Zа-яА-Я\*0-9=+%#\-\/\\|,;_<>`~".$&^@!?\(\)\{{\}}\[\]\s]|'')*)'""" # noqa: E501,RUF001
66
TABLE_PATTERN = r"\s+FROM\s+[a-zA-Z.\-*]+"
77
TABLE_GROUP_PATTERN = r"\s+FROM\s+(?P<table>[a-zA-Z.\-*]+)"
8+
9+
FIELD_NAME_PATTERN = rf"(?P<{ValueType.no_quotes_value}>[a-zA-Z0-9\._\-]+)"
10+
DOUBLE_QUOTES_FIELD_NAME_PATTERN = rf'"(?P<{ValueType.double_quotes_value}>[a-zA-Z0-9\._\-\s]+)"'

uncoder-core/app/translator/platforms/base/aql/tokenizer.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,13 @@
2929
from app.translator.core.models.query_tokens.keyword import Keyword
3030
from app.translator.core.str_value_manager import StrValue
3131
from app.translator.core.tokenizer import QueryTokenizer
32-
from app.translator.platforms.base.aql.const import NUM_VALUE_PATTERN, SINGLE_QUOTES_VALUE_PATTERN, UTF8_PAYLOAD_PATTERN
32+
from app.translator.platforms.base.aql.const import (
33+
DOUBLE_QUOTES_FIELD_NAME_PATTERN,
34+
FIELD_NAME_PATTERN,
35+
NUM_VALUE_PATTERN,
36+
SINGLE_QUOTES_VALUE_PATTERN,
37+
UTF8_PAYLOAD_PATTERN,
38+
)
3339
from app.translator.platforms.base.aql.functions.const import AQLFunctionGroupType
3440
from app.translator.platforms.base.aql.str_value_manager import aql_str_value_manager
3541
from app.translator.tools.utils import get_match_group
@@ -51,7 +57,7 @@ class AQLTokenizer(QueryTokenizer):
5157
multi_value_operators_map: ClassVar[dict[str, str]] = {"in": OperatorType.EQ}
5258

5359
field_pattern = r'(?P<field_name>"[a-zA-Z\._\-\s]+"|[a-zA-Z\._\-]+)'
54-
function_pattern = r'(?P<func_name>[a-zA-Z_]+)\((?:(?:[a-zA-Z\._\-\s]+)|(?:"[a-zA-Z\._\-]+"))\)'
60+
function_pattern = rf"(?P<func_name>[a-zA-Z_]+)\((?:{FIELD_NAME_PATTERN}|{DOUBLE_QUOTES_FIELD_NAME_PATTERN})\)"
5561
bool_value_pattern = rf"(?P<{ValueType.bool_value}>true|false)\s*"
5662
_value_pattern = rf"{NUM_VALUE_PATTERN}|{bool_value_pattern}|{SINGLE_QUOTES_VALUE_PATTERN}"
5763
multi_value_pattern = rf"""\((?P<{ValueType.multi_value}>[:a-zA-Z\"\*0-9=+%#\-_\/\\'\,.&^@!\(\s]*)\)"""

0 commit comments

Comments
 (0)