postgres正規表現で文字\ u0001〜\ u0031を検索

postgresql regex
postgres正規表現で文字\ u0001〜\ u0031を検索

postgres列の値で\ u0004や\ u0001などのすべての空白文字を見つけるにはどうすればよいですか? 開始、中間、終了のいずれかになります。 \ u0001から\ u0031までの空白文字だけでなく、スペース(\ u0032)値を取得したくない。

以下のようなものですが、スペースも選択するのは正しくありませんか?

select column where column ~* '[\u0001-\u0031]'

ありがとう

  2  0


ベストアンサー

通常のスペース以外の空白文字に一致させる必要がある場合は、次の正規表現を使用できます。

[^\S ]

1


おそらく、http://www.postgresql.org/docs/current/static/functions-matching.html#POSIX-CHARACTER-ENTRY-ESCAPES-TABLE [\ uwxyz]形式を10進数で混乱させているでしょう。 Unicodeのhttp://www.unicode.org/charts/PDF/U0000.pdf[C0 Controls and Basic Latin]チャートを確認してください。 C0コントロールの範囲はU + 0001からU + 001Fであると思うので、次のように書くことができます。

SELECT  E'\u0033 dfgdgdg' ~ E'[\\u0001-\\u001F]' AS isMatch;

または、8進数の `\ xyz`を使用します。

SELECT  E'\u0033 dfgdgdg' ~ E'[\\001-\\037]' AS isMatch;

別の便利な方法は、http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-DOLLAR-QUOTING [dollar quoting]を使用してパターンを記述することです(したがって、不要です)さらにバックスラッシュをエスケープするには):

$$[\u0001-\u001F]$$
$$[\x001-\x01f]$$
$$[\001-\037]$$

1


1つの空白文字は0x31ではなく0x20です。 空白の下のUnicode文字の範囲は、「\ u0001」から「\ u0019」

0


タイトルとURLをコピーしました