Объявление 2000 переменных крайне не нужно;Вы должны определить все значения в одном массиве, а затем как-то перебрать их.
Кроме того, регулярное выражение является очень повторяющимся - например, использование (?:dbName\.[a-z]*\.)
2000 раз.Это можно упростить, сгруппировав все ваши значения в группу без захвата следующим образом:
values = %w(alpha fox delta)
regex = /(?<=^|\s)(?:dbName\.[a-z]*\.)?(?:#{Regexp.union(values)})(?=\s|$)/
Это результат:
/(?<=^|\s)(?:dbName\.[a-z]*\.)?(?:(?-mix:alpha|fox|delta))(?=\s|$)/
Если вы расширите этот массив values
чтобы содержать 2000 строк, другой код не нужно менять.