Я думаю, что вы должны использовать двухэтапный подход:
Начните с поиска всего исходного файла, захвата
строки между:
uses
(в начале строки) + последовательность пробелов,
- и
;
, завершение списка импорта.
Затем в каждом из приведенных выше совпадений найдите импортированные элементы.
Первое задание можно выполнить с помощью ^uses\s+([a-z.,\s]+);
и текст для обработки на следующем шаге является содержанием
группа захвата № 1.
На втором шаге, выполняемом в каждом из вышеуказанных матчей,
Вы можете использовать [a-z]+(?:\.[a-z]+)*(?=[,;])
.
Оба вышеприведенных регулярных выражения должны выполняться с i
(case
нечувствительный), m
(многострочный) и g
(глобальный) параметры.
Обратите внимание, что подход с одним регулярным выражением является неправильным, потому что если группа захвата
был найден несколько раз, затем процессор регулярных выражений возвращает
только последний матч для такой группы.