點我有這些字符串:捕捉與Postgres的正則表達式
3 FD160497. 2016 abcd
3 FD160497 2016 abcd
我想捕捉「FD」,數字,然後點(如果存在)。
我嘗試這樣做:
SELECT
sqn[1] AS letters,
sqn[2] AS digits,
sqn[3] AS dot
FROM (
SELECT
regexp_matches(string, '.*?(FD)([0-9]{6})(\.)?.*') as sqn
FROM
mytable
) t;
(PostgreSQL的9.5.3)
「點」 列是在兩種情況下NULL
,我真的不知道爲什麼。 它在regex101上效果很好。
嘗試'regexp_matches(字符串,」 *(FD)( [0-9] {6})(\。)?。*')as sqn'或甚至在'F'之前添加一個空格。 –
嘗試使用貪婪的旗幟。如果貪婪選項未設置(=懶惰),則該點可能會匹配最少的字符。該點將在最後與'。*'匹配。或者,您可以在最後一個問號後添加一個空格。 – Plasm