匹配PGSQL正则表达式中的多个十六进制字符

问题描述:

我试图在PostgreSQL中使用正则表达式找到一些非常特定的多字节字符。我知道我可以选择做长CASE WHEN,但我决定检查是否有不同的方法来找到这些。匹配PGSQL正则表达式中的多个十六进制字符

我现在的正则表达式看起来像这样E'\xf0\x9f\x98\x83' 这工作得很好,但我需要找到所有从\xf0\x9f\x98\x80\xf0\x9f\x98\x99

在JS中,我只能写出类似\xf0\x9f\x98[\x80-\x89]的东西,但无论出于何种原因,这会在PGSQL中返回错误。有没有这样的捷径,还是我注定要写20 CASE WHEN -s?

+0

尝试用'[...]'中的文字符号代替'\ x80'和'\ x89'。 –

+0

@WiktorStribiżew谢谢,这个想法看起来不错,但我不熟悉多字节字符。我该怎么做?你能解释一下吗? – WolfyD

+0

'\ x80'和'\ x89'是多字节字符吗?不知道,我只是想猜测。 –

我意识到我的错误。 PGSQL错误是由于我正在查找4字节字符而引起的,我只是想要弄乱最后一个字节。我意识到我必须这样写:E'[\xf0\x9f\x98\x80-\xf0\x9f\x98\x90]'