Hocam preg_match'in çalışması için başlangıç ve bitişin belirlenmesi gereklidir.Sizin kodunuzu inceleyecek olursak

<?php  

    $yazi = "335 lira"; 
     
    preg_match_all("#(.*?) (.*?)#",$yazi,$bol); 
     
    print_r($bol);
Hepsini tek tek açıklayalım.
() Bu gurupla demek
.*? Tüm karakterleri al demek.
# Zaten başlangıç ve bitişi belirtmek için.

Şimdi kodumuz neden çalışmadı çünkü
İlk grupta yani (.*?) tüm karakterleri al dedik.Ama nereye kadar alacak işte sizin bıraktığınız boşluğa kadar alacak.Yani 12345abc lira 12345abc'yi alır boşluk görünce durur.
İkinci gurup hiç çalışmadı çünkü tamam hepsini al dedik yine ama nereye kadar alacak belirtmedik.
Yani .*? kullanırken duracağı yeri belirtmemiz lazım siz () bundan sonran boşluk bıraktığınız için orada durdu.

Peki nasıl çalışır.

$yazi = "335 lira";
     
    preg_match_all("#(.*?) (w+)#",$yazi,$bol);
     
    print_r($bol);
Yeni kodu açıklayalım.
w Harfleri al (Türkçe karakterleri almaz)
+ ise birden fazla kez tekrar edebilir demek.

1. yine çalıştı boşluğu gördü şimdi diyebilirsinizki 2. nasıl çalıştı durdurmak için bir şey yazmadım.Aslında w+ bu kod kendi içinde başlayacağı ve duracağı yeri belirtiyor nasıl yani şöyle benim kelimem abcdefg olsun regex'imde w+ idi yani bu kod ile ona harf ile başla harf ile bit demek istedim. a ile başka g harfi ile bit.

İyi forumlar.Umarım anlatabilmişimdir.