我如何在Postgres 12中使用regex來分割name列。我希望輸出如下。
| 名稱 | 輸出 | 替代性輸出|
|---|---|---|
| abcd | {abcd} | {abcd} | abcd1234567efg | {abcd, 1234567, efg}? |
| abcd1234567efg | {abcd, 1234567, efg} | abcd1234567.89efg | {abcd, 1234567.89, efg} | {abcd, 1234567.89, efg}? |
| abcd1234567.89efg | {abcd, 1234567.89, efg} | abcd12efg34567hij? | {abcd, 12, efg, 34567, hij} | {abcd, 12, efg, 34567, hij}。 | {abcd, 12efg, 34567, hij} |
| {abcd, 12efg, 34567, hij} | {abcd, 12, efg, 34567.89, hij} | {abcd, 12efg, 34567.89, hij} |
| {abcd, 12efg, 34567.89, hij} |
現在使用SELECT (REGEXP_MATCH(name, '(?:(.*?)(d (?:.d )?(.*)){1,1}' ) AS s
這對第2和第3行來說是很好的。
任何可能的最佳解決方案。
任何可能的最佳解決方案。
謝謝
uj5u.com熱心網友回復:
你可以嘗試在regex模式上進行匹配d (?:.d )?|D ,這將替代性地匹配數字或非數字字符組:
SELECT REGEXP_MATCHES(name, 'd (?:.d )?|D '/span>, 'g'/span>) AS s
FROM yourTable;
對于輸入abcd12efg34567.89hij,以下元素將被匹配:
s
{abcd}
{12}{efg}.
{efg}
{34567.89}
{hij}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/323780.html
標籤:
上一篇:匹配不含斜線的字串的反語法
