python +postgresql : Convert string literal to regex

标签 python regex postgresql string

我想执行一个查询,其中我使用正则表达式将列名与我的变量 s 匹配。 s 是字符串文字,可能包含 ?*. 等内容。我想转换s 使 ? 变成 .{0,3},使其所有剩余的正则表达式符号保持文字,然后添加 .* 到最后。示例:

Hi -> Hi.*
Fo?ar -> Fo.{0,3}ar.*
F.a*rx -> F\.a\*rx.*
F.a?*rx -> F\.a.{0,3}\*rx

执行此操作的最佳方法是什么?大多数情况下,我不确定如何引用字符串文字,以便正则表达式符号不会被解释为正则表达式符号(例如 . -> \.)。

最佳答案

print '.{0,3}'.join(re.escape(part) for part in s.split('?')) + '.*'

关于 python +postgresql : Convert string literal to regex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5425260/

相关文章:

java - 无法在java中使用此正则表达式提取字符串

regex - 在 Linux 中删除文件名中的空格

postgresql - 如何更改 PostgreSQL 中的列默认值?

postgresql - 如何在 PostgreSQL 中更改 "REFERENCES"?

python - 从 numpy 数组中逐一减去行

python - django 将 models.DecimalField 与表单结合起来 -> 错误 : quantize result has too many digits for current context

python - 在 Django 模板中路由时,如何处理标题中的正斜杠 '/'?

python - scrapy - 如果跟随无限网站则终止抓取

javascript - 不必要的转义字符 :\[ no-useless-escape

postgresql - createuser: 无法连接到数据库 postgres: 无法连接到服务器: 没有那个文件或目录