Для приложения, которое в какой-то момент интерпретирует текст определения данных, я хочу использовать регулярное выражение.Регулярное выражение должно разбивать определение данных на 4 группы для каждой строки.
Проблема в том, что есть группа между круглыми скобками, но это также необязательно И оно должно исключать круглые скобки из результата.Я пробовал кое-что, но не могу заставить его работать.
Это то, что я получил до сих пор
\[(.*?)\]\s.*(varchar|datetime|int|numeric)(\(.*?\))?(.*)
# explanation
\[(.*?)\] # field name between brackets
\s.* # one or more spaces
(varchar|datetime|int|numeric) # data type keywords
(\(.*?\))? # length or mask, ?=optional
(.*) # anything after that are the hints
Например, введите это
[LastName] varchar(50) NULL
[BirthDate] datetime(dd-mm-yyyy) NOT NULL
[HBa] numeric NOT NULL
[email] varchar(50) NOT NULL
[Followup] int NULL
Для каждой строки есть соответствие, например, результаты для BirthDate
выглядят так:
# current # desired
group 1: BirthDate group 1: BirthDate
group 2: datetime group 2: datetime
group 3: (dd-mm-yyyy) group 3: dd-mm-yyyy
group 4: NOT NULL group 4: NOT NULL
В идеале группа 3 должна исключать скобки, а также группа 4 не должна включатьпробелы в начале.есть идеи как это сделать?Смотрите пример здесь: https://regex101.com/r/x60Ekg/1