Из приведенных вами примеров и условий я думаю, что вам понадобится очень ограничительное регулярное выражение, но это может зависеть от того, как вы хотите его адаптировать. Взгляните на следующее регулярное выражение и прочитайте разбивку для получения дополнительной информации о том, что он делает. Используйте первую группу (в этом регулярном выражении есть только одна) в качестве замены для получения чисел, которые вы ищете.
Regex
^instance\=hostname[0-9]+\,\s*topic\=\“[A-Z_]+([0-9]+)_[A-Z_]+[0-9_]+\”$
Попробуйте в этом ДЕМО .
Разбивка
^ # Asserts position at start of the line
hostname[0-9]+ # Matches any and all hostname numbers
\s* # Matches whitespace characters (between 0 and unlimited times)
[A-Z_]+ # Matches any upper-case letter or underscore (between 1 and unlimited times)
([0-9]+) # This captures the number you want
$ # Asserts position at end of the line
Хотя это действительно отвечает на вопрос, который вы задали, я боюсь, что это может быть не совсем то, что вы ищете, но без дополнительной информации это лучшее, что я могу вам дать. В любом случае, после того, как вы изучите разбивку и поиграете с демо-версией, она должна вам помочь.