Non puoi farlo solo in regexp perché regexp non supporta la matematica sui gruppi acquisiti anche se sono tutti caratteri numerici. Quindi devi prendere il gruppo che rappresenta il numero del piano, fare i calcoli e ricollegarlo:
SELECT regexp_replace('B12F34', 'B(\d+)F(\d+)', 'Building \1 - Floor ') ||
((regexp_matches('B12F34', '[0-9]+$'))[1]::int + 10)::text;
Non molto efficiente a causa delle due chiamate regexp. Un'altra opzione è semplicemente ottenere i due numeri in una sottoquery e assemblare la stringa nella query principale:
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;