我正在嘗試從下面的字串中提取Twitter 和 Fortnite、Facebook 和 Words with Friends以及Expedia 和 Notion的子字串。這些只是示例,它們之間的共同模式是“AppNames”;s:xx:“其中xx是每個字串的不同數字。我很難解釋不同的數字。這是我當前的 REGEX_SUBSTR不考慮s:xx中不同數值的查詢
REGEXP_SUBSTR(FORM_FIELDS, '"AppNames";s:17:\"([^\"] )', 1, 1, 'e')
重申一下,上面的查詢將輸出Twitter 和 Fortnite,這對于第一個字串是正確的,但我還有許多其他字串相似但具有不同的數字模式,例如...
- “應用程式名稱”;s:35
- "AppNames";s:50
- “應用程式名稱”;s:44
字串
s:25:"Social/Games";s:14:"AppNames";s:17:"Twitter and Fortnite";s:12:"Audience";s:20;} s:25:"Social/Games";s:14:"AppNames";s:35:"Facebook and Words with Friends";s:12:"Audience";s:20;} s:15:"Travel/Productivity";s:19:"AppNames";s:50:"Expedia and Notion";s:12:"Audience";s:20;}
uj5u.com熱心網友回復:
with data(FORM_FIELDS) as (
SELECT * from values
('s:25:"Social/Games";s:14:"AppNames";s:17:"Twitter and Fortnite";s:12:"Audience";s:20;}'),
('s:25:"Social/Games";s:14:"AppNames";s:35:"Facebook and Words with Friends";s:12:"Audience";s:20;}'),
('s:15:"Travel/Productivity";s:19:"AppNames";s:50:"Expedia and Notion";s:12:"Audience";s:20;}')
)
select
REGEXP_SUBSTR(FORM_FIELDS, '"AppNames";s:[0-9] :\"([^\"] )', 1, 1, 'e') as new
,REGEXP_SUBSTR(FORM_FIELDS, '"AppNames";s:17:\"([^\"] )', 1, 1, 'e') as old
from data;
給出:
新的 | 老的 |
---|---|
推特和堡壘之夜 | 推特和堡壘之夜 |
Facebook 和 Words with Friends | 無效的 |
Expedia 和 Notion | 無效的 |
所以[0-9]
將匹配 1 位,你也可以使用\\d
,但如果你只想要 2\\d{2}
會強制這樣做。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/485558.html