python+postgresql:将字符串文字转换为正则表达式
我想执行一个查询,其中使用正则表达式将列名与我的变量 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
执行此操作的最佳方法是什么?大多数情况下,我不确定如何引用字符串文字,以便正则表达式符号不会被解释为正则表达式符号(例如 .
-> \.
)。
I want to execute a query where I match a column name using a regex to my variable, s
. s
is a string literal and may contain things like ?
, *
, .
, etc. I want to convert s
so that ?
turns into .{0,3}
, so that all of its remaining regex symbols remain literals, and then add .*
to the end. examples:
Hi -> Hi.*
Fo?ar -> Fo.{0,3}ar.*
F.a*rx -> F\.a\*rx.*
F.a?*rx -> F\.a.{0,3}\*rx
What's the best way to do this? Mostly I'm unsure how to quote a string literal so the regex symbols aren't interpreted as regex symbols (e.g. .
-> \.
).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用
re.escape(string)
方法。其中指出:
查看re 模块页面
Use the
re.escape(string)
method.Which states:
Check out the re module page.