Регулярное выражение

vkhacker

Новичок
Имеется строка вида:
UNIQUE INDEX name (name,id)
UNIQUE INDEX test (trt,edw)
UNIQUE INDEX test2( ewe , wewe )

Требуется спарсить названия полей из скобок.

Сделал так:
\s*UNIQUE\s+INDEX\s+[`]?[a-z0-9_\$]+[`]?\s*\(\s*([`]?([a-z0-9_\$]+)[`]?\s*[,]?\s*)+\)
, но парсится только последнее вхождение.

https://regex101.com/r/9bL2LO/1
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Реши задачу БЕЗ регулярок, дял начала.

\(\s?([a-z`,\s]+)+\s\) неполное
 
Последнее редактирование:

vkhacker

Новичок
Реши задачу БЕЗ регулярок, дял начала.

\(\s?([a-z`,\s]+)+\s\) неполное
Если что в примере указана одна строка с разделитем - перенос строки. Разделитель может быть другой. Искать именно для UNIQUE INDEX поля в скобках.
У вас в регулярке ошибка. Вы хотели сделать так:
\(\s?([a-z`,\s]+)+\)

Но мы возвращаемся к тому, что было у меня. Первая группа содержит всё, что в скобках. А нужно сделать так, чтобы спарсились названия полей. Количество полей может быть любым.

Мне нужен примерно такой результат:
Match 1
Group 1 name
Group 2 id

Match 2
Group 1 trt
Group 2 edw

Match 3
Group 1 ewe
Group 2 wewe
 
Последнее редактирование:

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
У меня ошибки нет, я написал - "неполное", там надо подумать и допилить. Выбери просто то, что в скобках и далее обработай.
 

AnrDaemon

Продвинутый новичок
Именно спарсить одной регуляркой - нет, не получится.
Если есть повторение, то понадобится минимум две.
 
Сверху