我想执行一个查询,其中我使用正则表达式将列名称与我的变量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
最好的方法是什么?大多数情况下,我不确定如何引用字符串文字,因此正则表达式符号不会被解释为正则表达式符号(例如.
- > \.
)。
答案 0 :(得分:3)
print '.{0,3}'.join(re.escape(part) for part in s.split('?')) + '.*'
答案 1 :(得分:1)