我想执行一个查询,其中我使用正则表达式将列名与我的变量 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/