如何在postgres列值中找到像\ u0004或\ u0001這樣的全部空白字符? 它可以在開始,中間或結束。我不想獲得空格(\ u0032)的值,只是包含從\ u0001到\ u0031的空白字符。postgres正則表達式查找chars u0001到 u0031
像下面的東西,但它不正確,它也選擇空間?
select column where column ~* '[\u0001-\u0031]'
感謝
如何在postgres列值中找到像\ u0004或\ u0001這樣的全部空白字符? 它可以在開始,中間或結束。我不想獲得空格(\ u0032)的值,只是包含從\ u0001到\ u0031的空白字符。postgres正則表達式查找chars u0001到 u0031
像下面的東西,但它不正確,它也選擇空間?
select column where column ~* '[\u0001-\u0031]'
感謝
你可能混淆\uwxyz
格式十進制基數。請確認Unicode的C0 Controls and Basic Latin圖表。我猜你想C0控制範圍從U + 0001到U + 001F,所以你可以寫:
SELECT E'\u0033 dfgdgdg' ~ E'[\\u0001-\\u001F]' AS isMatch;
或用八進基地\xyz
:
SELECT E'\u0033 dfgdgdg' ~ E'[\\001-\\037]' AS isMatch;
另一個方便的方法是編寫圖案dollar quoting(所以你不需要額外逃避反斜槓):
$$[\u0001-\u001F]$$
$$[\x001-\x01f]$$
$$[\001-\037]$$
如果需要,除了正常的空間中的任何空白字符匹配,那麼你可以使用這個表達式:
[^\S ]
爲了完整性,U + 0000-U + FFFF定義爲(BMP)**代碼點**(寫成十六進制數字)。 –