【发布时间】:2018-10-17 20:23:53
【问题描述】:
我在 python 和 Redshift psql 上尝试过的相同正则表达式模式在 python 上有效,但在 Redshift psql 上无效。
我的字符串如下所示:
s = 'AB.w127 xyz (9f6h, 89) amf, like mr .345x980 abcd'
我要提取“AB”和“.345x980”之间的所有内容(本例中为“w127 xyz (9f6h, 89) amf, like mr”),这里的乘数会有所不同,内容两者之间是完全不可预测的。
所以在我的 Redshift psql 查询中,我使用了regexp_substr(s, 'AB\.(.*?)\.\d+x\d+.*?')。我希望至少能得到一些东西,以便以后我可以使用 group(1) 作为 python 逻辑。
但 Redshift 一直向我显示此错误:
重复运算符之前的正则表达式无效。解析正则表达式时出错:'AB.(.?>>>HERE>>>).d+xd+.?'。
我也尝试了AB\\.(.*?)\\.\\d+x\\d+.*?')的模式,但仍然出现同样的错误。
有没有办法用 Redshift psql 提取字符串?
【问题讨论】:
-
也许试试这个模式?
'^AB\\.(.*)\\.\\d+x\\d+.*$' -
您能否编辑问题并提供更多输入示例和所需输出,以便我们为您测试正则表达式?
-
如果贪心版不好,请发一个更完整的测试样本。
-
已编辑。在这种情况下,我想提取“w127 xyz (9f6h, 89) amf, like mr”。
标签: regex amazon-redshift psql