From 2954c634f9945091e37c624f567ceda8ac288e5a Mon Sep 17 00:00:00 2001 From: shaoyuyishiwo <523314409@qq.com> Date: Sun, 17 Nov 2019 05:02:11 +0000 Subject: [PATCH] =?UTF-8?q?[fix](common.py)=E4=BF=AE=E6=AD=A3=E3=80=8C?= =?UTF-8?q?=E6=AD=A3=E5=88=99=E8=BD=AC=E4=B9=89=E5=AD=97=E7=AC=A6=E3=80=8D?= =?UTF-8?q?=E7=9A=84=E6=A8=A1=E7=B3=8A=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/utils/common.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/backend/utils/common.py b/backend/utils/common.py index 8a2ae32..033c463 100644 --- a/backend/utils/common.py +++ b/backend/utils/common.py @@ -107,6 +107,20 @@ def can_convert_to_float(input): return False +re_escapes = ['*', '.', '?', '+', '$', '^', '[', ']', '(', ')', '{', '}', '|'] + + +def format_escapes(input, escapes=re_escapes): + if can_convert_to_str(input): + input = str(input) + for index, char in enumerate(input): + if char in escapes: + input = input.replace(char, '\\' + char) + return input + else: + return None + + def format_order(raw_order): if not isinstance(raw_order, str): raise TypeError('raw_order must be str!') @@ -145,7 +159,8 @@ def get_total_num_and_arranged_data(raw_model, query_dic, fuzzy_fields=None): if not isinstance(fuzzy_field, str): raise TypeError('fuzzy_field need to be str') if fuzzy_field in query_dic and can_convert_to_str(query_dic[fuzzy_field]): - query_dic[fuzzy_field] = re.compile(str(query_dic[fuzzy_field])) + pre_compiled_str = format_escapes(str(query_dic[fuzzy_field])) + query_dic[fuzzy_field] = re.compile(pre_compiled_str) query_dic = format_js_dic_to_python_dic(query_dic) raw_model_copy = copy.deepcopy(raw_model) raw_model_data_copy = [] -- GitLab