python + postgresql:将字符串文字转换为正则表达式

时间:2011-03-24 20:41:54

标签: 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

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

使用re.escape(string)方法。

哪个州:

  

全部返回字符串   非字母数字反向;这是   如果你想匹配一个很有用   可能有的任意文字字符串   正则表达式元字符   它

查看re module page.