我想2,3從如下文本中獲取子字串:
subscribed lists 2, 3 and opened case 8
問題是,我不確定之后會有多少個數字subscribed lists,不確定之后是否會有任何數字。所以它也可能是
subscribed lists 2
subscribed lists 2, 6
我試過select substring(target_expression,'subscribed lists (?!,$)[\d,.]*')或
select substring(target_expression,'subscribed lists [\d ,] ')
(計劃subsribed lists稍后洗掉)
但subscribed lists 2,在那之后我只能得到無法得到的數字。
有任何想法嗎?
提前致謝!
uj5u.com熱心網友回復:
試試這個運算式:subscribed lists \d (?:\s*,\s*\d )*
您可以在那里嘗試:https ://regex101.com/r/OQTkdL/1
uj5u.com熱心網友回復:
實際上我試過這個并且它有效
select substring(target_expression,'subscribed lists [\d,|\d ] ')
uj5u.com熱心網友回復:
由于您只想獲取數字,因此您需要在模式中使用與它們匹配的捕獲組:
select substring(txt,'subscribed\s lists\s (\d (?:\s*,\s*\d )*)')
SQL 演示:
CREATE TABLE test (
txt character varying
);
INSERT INTO test (txt) VALUES ('subscribed lists 2');
INSERT INTO test (txt) VALUES ('subscribed lists 2, 6');
select substring(txt,'subscribed\s lists\s (\d (?:\s*,\s*\d )*)') from test;
輸出:
| 子串 |
|---|
| 2 |
| 2、6 |
請參閱正則運算式演示。
詳情:
subscribed\s lists\s-subscribed, 一個或多個空格,lists, 和一個或多個空格(\d (?:\s*,\s*\d )*)- 第 1 組:一個或多個數字 (\d),然后出現零個或多個逗號,其中包含零個或多個空格,然后是一個或多個數字
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/413585.html
標籤:
