Postgres无效的正则表达式:无效的字符范围

时间:2016-07-29 22:56:01

标签: regex postgresql

我在postgres函数中使用以下行:

read-line-into-buffer

但是当我尝试使用它时,我得到regexp_replace(input, '[^a-z0-9\-_]+', sep, 'gi');。正则表达式在Ruby中运行良好,是否有理由在postgres中有所不同?

3 个答案:

答案 0 :(得分:4)

一些正则表达式解析器将在中间使用短划线( - ),如果在你拥有它的范围之后,但其他人不会。我怀疑postgres regexp解析器在后面的类中。在正则表达式中使用破折号的规范方法是从它开始,即将正则表达式更改为'[^-a-z0-9_]+',这可能使它通过解析器。然而,一些正则表达式解析器可能非常繁琐,也不接受它。

我没有postgres进行测试,但我希望他们能够接受上面的正则表达式并正确处理。否则你必须找到他们手册的正则表达式部分并理解它的含义。

答案 1 :(得分:0)

对我来说,它可以将破折​​号(-)移至列表末尾

[A-Za-z0-9-_.+=]替换为[A-Za-z0-9_.+=-]似乎可行

答案 2 :(得分:0)

我遇到了同样的问题

使用

\-

而不仅仅是

-

对我有用