'Regex from stringified-array

How do you extract regex values from a stringified-array?

Sample data:

with data as (select 1 as id, '["abc_def_123","uvw_xyz_456"]'::string as my_field)
select * from data

my_field could have up to 4 items (if important).

Desired output:

--------------------------------
|  id  |  f1   |  f2   |  f3   |
--------------------------------
|  1   |  abc  |  def  |  123  |
|  1   |  uvw  |  xyz  |  456  |
--------------------------------


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source