Ciao ho un problema con le regex e PHP...

HO un file index:

Codice PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<? $page = $_GET['pagina']; include function.php; ?>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>Senza nome 1</title>
</head>

<body>

<? Body(); ?>

</body>

</html>
function.php
Codice PHP:

if($page == "due"){

function
Body(){

// Elenca tutte le img di una directory e ne esegue la paginazione

}

}elseif(
$page == "ds"){

//

} // ETC
Per sfruttare il fattore indicizzazzione utilizzo il MOD_REWRITE:

Codice:
RewriteEngine On
RewriteBase /

RewriteRule ^cartella-virtuale/categoria-([a-z]+)-([0-9]+).html$ /index.php?pagina=due&category=$1&pag=$2
RewriteRule ^cartella-virtuale/categoria-(.*)\.html$ /index.php?pagina=due&category=$1 [L]

RewriteRule ^(.*)\.html$ default.php?pagina=$1
Come si può ben capire ho più pagine che mostrano un body diverso a seconda di $_GET...la maggior parte delle pagine esistono...altre sono virtuali come la cartella...ora la prima rule funziona
Codice:
RewriteRule ^cartella-virtuale/categoria-(.*)\.html$ /index.php?pagina=due&category=$1 [L]
La seocnda no:
Codice:
RewriteRule ^cartella-virtuale/categoria-([a-z]+)-([0-9]+).html$ /index.php?pagina=due&category=$1&pag=$2
Perchè se io faccio nella pagina due
Codice PHP:
echo "CATEGORIA: $cat <br /> PAGINA: {$_GET['pagina']} <br /> PAG: {$_GET['pag']}";
Ed ho una cosa del tipo: sito.com/cartella-virtuale/categoria-barche-1.html vi viene stampato:

CATEGORIE: barche-1
PAGINA: due
PAG:

Quindi il problema e che il trattino tra la categoria e il numero della pagina viene letto come categoria...come posso risolvere con il rewrite questo problema?

Aiutatemi vi prego...