The best way is to make a function for the next code:
I assume the amount is in a word(seperated by spaces)

clear
set serveroutput on

declare
--ls_str varchar2(200) := 'Fans (8) ';
ls_str varchar2(200) := 'Electroux754 ';
ls_word varchar2(200);
ls_rest varchar2(200);
i_strt integer := 1;
i_pos integer;
b_exit boolean := false;
ln_amount number(4);
begin
-- Assume the value is in a word, so check all words

-- First remove the head and trail spaces
ls_rest := trim(ls_str);
loop
-- Find a the first space
i_pos := instr(ls_rest,' ') - 1;
if i_pos <= 0
then
-- There are no spaces (anymore), so this is the last word
b_exit := true;
ls_word := ls_rest;
else
-- Word found
ls_word := substr(ls_rest,1,i_pos);
end if;
-- Strip the brackets
if substr(ls_word,1,1) = '('
then
ls_word := replace(ls_word,'(','');
ls_word := replace(ls_word,')','');
end if;
i_strt := i_pos + 2;
ls_rest := substr(ls_rest,i_strt);
begin
ln_amount := to_number(ls_word);
exception
when VALUE_ERROR
then
ln_amount := null;
end;
if b_exit then exit; end if;
end loop;
if ln_amount is null
then
ln_amount := 1;
end if;
dbms_output.put_line( 'Number :'||ln_amount);
end;
/