2016-08-23 6 views
1

私は、Regexを使用してPostgreSQLで非常に特定のマルチバイト文字を見つけようとしています。 CASE WHENを長くするという選択肢があることは分かっていますが、これを見つける方法が異なるかどうかを確認することにしました。PGSQL Regexの複数の16進文字の一致

私の現在の正規表現は、この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'はマルチバイト文字ですか?いいえ、私はちょうど推測しようとしました。 –

答えて

1

私は間違いを認識しました。 PGSQLエラーは、私が4バイトの文字を探していて、最後のバイトを混乱させたいからです。 E'[\xf0\x9f\x98\x80-\xf0\x9f\x98\x90]'