Шаблон (.*?)@
соответствует и захватывает в Группу 1 любые ноль или более символов, кроме символов разрыва строки, как можно меньше, начиная с самого левого совпадения , так что вы все начнете сопоставление с самого начала строки, где находится символ @
.
Вам необходимо использовать более точный шаблон:
\w+(?=\s*@)
[A-Z]+(?=\s*@)
([A-Z]+) @
См. демонстрацию регулярного выражения . В первых двух примерах нужное вам значение попадает во все совпадение, в третьем значение фиксируется в группе 1.
Подробности
\w+(?=\s*@)
- 1+ букв / цифр / подчеркиваний, за которыми следуют 0+ пробелов и @
[A-Z]+(?=\s*@)
- 1+ прописных букв ASCII, за которыми следуют 0+ пробелов и @
([A-Z]+) @
- захват группы 1 соответствует 1+ заглавным буквам ASCII, затем пробел и @
совпадают (но не захватываются).