I'm not entirely sure how you want to have your data returned, but this should get you on the right track. The final parameter '1' in REGEXP_SUBSTR fetches the first capturing group (\d+), which is the number that comes after the day's name.
WITH tab AS (
SELECT 'monday12monday, tuesday567tuesday, friday87friday' AS tags
FROM DUAL
)
SELECT
REGEXP_SUBSTR(tags, 'monday(\d+)', 1, 1, NULL, 1) AS monday,
REGEXP_SUBSTR(tags, 'tuesday(\d+)', 1, 1, NULL, 1) AS tuesday,
REGEXP_SUBSTR(tags, 'wednesday(\d+)', 1, 1, NULL, 1) AS wednesday,
REGEXP_SUBSTR(tags, 'thursday(\d+)', 1, 1, NULL, 1) AS thursday,
REGEXP_SUBSTR(tags, 'friday(\d+)', 1, 1, NULL, 1) AS friday
FROM tab
Returns:
| MONDAY |
TUESDAY |
WEDNESDAY |
THURSDAY |
FRIDAY |
| 12 |
567 |
null |
null |
87 |
db<>fiddle here
Edit:
If there are decimals or thousand signs in the numbers you need to deal with, change the capture group pattern from (\d+) to (\d+[\.,]?\d*[\.,]?\d*)
db<>fiddle here