正規表現はすべて数字であっても、キャプチャされたグループの計算をサポートしていないため、正規表現だけでこれを行うことはできません。したがって、フロア番号を表すグループを取得し、計算を行って、次のようにつなぎ合わせる必要があります。
SELECT regexp_replace('B12F34', 'B(\d+)F(\d+)', 'Building \1 - Floor ') ||
((regexp_matches('B12F34', '[0-9]+$'))[1]::int + 10)::text;
2つの正規表現呼び出しがあるため、あまり効率的ではありません。もう1つのオプションは、サブクエリで2つの数値を取得し、メインクエリで文字列をアセンブルすることです。
SELECT format('Building %L - Floor %L', m.num[1], (m.num[2])::int + 10)
FROM (
SELECT regexp_matches('B12F34', '[0-9]+', 'g') AS num) m;