Если вы хотите получить только эти совпадения, вы можете использовать якорь ^
, чтобы подтвердить начало строки;
В данных вашего примера кажется, что вам не нужны цифры перед страницей.
Возможно, вы могли бы использовать подход закаленный жадный токен , чтобы утверждать, что справа не PAGE, а затем соответствовать любому из классов персонажей [A-Z0-9\s]
.
Затем убедитесь, что совпадение заканчивается на A-Z в верхнем регистре, за которым следует граница слова \b
a, при желании может совпадать с 4 цифрами после окончания на A-Z в верхнем регистре.
^(?:(?! PAGE)[A-Z0-9\s])+[A-Z](?: \d{4})?\b
Объяснение
^
Начало строки
(?:
Группа без захвата
(?! PAGE)
Отрицательный взгляд, утверждаю, что прямо справа нет
[A-Z0-9\s]
Соответствует любому из перечисленных в классе персонажей
)+
Закрыть группу без захвата и повторить 1+ раз
[A-Z]
Соответствует A-Z в верхнем регистре, за которым следует граница слова
(?: \d{4})?
При желании можно указать пробел и 4 цифры
\b
Граница слова
Regex demo