【发布时间】:2021-06-23 16:02:36
【问题描述】:
我的客户正在使用我编写的 django webapp 进行数据库搜索。该查询将正则表达式搜索发送到数据库并输出结果。
由于正则表达式搜索可能会很长且不直观,因此客户要求为正则表达式搜索创建某些自定义“通配符”。例如。
Ω := [^aeiou](所有非元音)
等等
这可以通过在查询中进行简单的永久字符串替换来实现,例如
query = query.replace("Ω", "[^aeiou]")
对于替换列表中的所有元素。这似乎应该是安全的,但我不太确定。
他还要求用户可以为他们的搜索动态定义自定义通配符。这样就会有一些其他的输入框供用户定义
∫ := some other regex
为了存储它们,您可以创建一个模型
class RegexWildcard(models.Model):
symbol = ...
replacement = ...
我个人对此有点警惕,因为它似乎并没有增加很多功能,但似乎确实给代码增加了很多复杂性和潜在问题。客户现在可以将他们的查询写入数据库。它们可以覆盖彼此的符号吗?
我以前从未在任何地方看到过这种做法,这也让我对这个想法有些警惕。
这可能吗?可取的?好主意?一个可怕的想法?资源和任何指导表示赞赏。
【问题讨论】: