Anda tidak dapat melakukan ini di regexp saja karena regexp tidak mendukung matematika pada grup yang ditangkap meskipun semuanya adalah karakter numerik. Jadi, Anda harus mendapatkan grup yang mewakili nomor lantai, hitung dan sambungkan kembali:
SELECT regexp_replace('B12F34', 'B(\d+)F(\d+)', 'Building \1 - Floor ') ||
((regexp_matches('B12F34', '[0-9]+$'))[1]::int + 10)::text;
Tidak terlalu efisien karena dua panggilan regexp. Pilihan lain adalah dengan hanya mendapatkan dua angka dalam sub-kueri dan merakit string dalam kueri utama:
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;