我想提取first_name和second_name字符串,但是使用这个正则表达式只能得到first_name字符串。
SELECT
SUBSTRING (
'a:2:{i:0;s:14:"first_name";i:1;s:15:"second_name";}',
'\"[^\"]*\" '
) as obs_regex如何修改我的正则表达式以获得first_name second_name结果?
谢谢你
发布于 2019-08-27 15:19:21
您可以使用g标志匹配多个匹配项,并且需要使用捕获组来获取不带引号的值:
SELECT
REGEXP_MATCHES (
'a:2:{i:0;s:14:"first_name";i:1;s:15:"second_name";}',
'"([^"]*)"', 'g'
) as obs_regex结果:

要获得连接在一起的匹配字符串,需要使用array_to_string将regexp_matches结果“转换”成一个数组
SELECT ARRAY_TO_STRING (
ARRAY (
SELECT REGEXP_MATCHES (
'a:2:{i:0;s:14:"first_name";i:1;s:15:"second_name";}',
'"([^"]*)"', 'g'
)
), ' ') as obs_regex结果:

https://stackoverflow.com/questions/57669480
复制相似问题