0
我想寫一個Postgres正則表達式來找到其中一列只有數字和超過5Postgres的正則表達式許多元素
EG的字符串長度記錄:列hello
有'0 1 1 2 1'
或'12345'
。
或者爲了保持簡單我想要一個正則表達式來識別包含5個或更多數字的行。
如何編寫該正則表達式?
我想寫一個Postgres正則表達式來找到其中一列只有數字和超過5Postgres的正則表達式許多元素
EG的字符串長度記錄:列hello
有'0 1 1 2 1'
或'12345'
。
或者爲了保持簡單我想要一個正則表達式來識別包含5個或更多數字的行。
如何編寫該正則表達式?
SELECT *
FROM (
VALUES
('98765')
,('1 2 3 4 5')
,('143562465')
,(' 1 2 5 3 235')
,(' 1 2 5 3 235s')
,('y 1 2 5 3 235')
,('245no')
,('1234')
) sub(hello)
WHERE hello ~ '^[\d ]+$'
AND length(translate(hello, ' ','')) > 4
結果:
98765
1 2 3 4 5
143562465
1 2 5 3 235
\d
..的regexp簡寫[位]的字符類
[\d ]
..數字或空間
^
..刺痛的開始
$
..結束的條紋ng
和translate()
是替換單個字符的最快方法,只是在此示例中爲空格。
如果你正在尋找一個單個正則表達式(可能比上述更慢)作者:
WHERE hello ~ '^ *(\d *){5,}$'
說明:
*
..零或多個空格
(\d *)
..的原子選自由之後是零個或多個空格字符
{5,}
..上一個原子5次或更多次
您列總是隻包含數字,可能還有空格? – Houari
而「數字」你的意思是「數字」,對吧?而且你想要列中只有數字和空格字符的行,對嗎? –
另外:'超過5的長度'或'5個或更多數字',它會是?假設「5或更多」... –