Non e' che non digerisce bene, e' che il pattern non fa quello che pensi e funziona per puro caso 
NON significa escludere la stringa function. Le parentesi quadre identificano gruppi di caratteri, per cui quel pezzo significa "cerca un carattere che NON sia una f, una u, una n, una c, una t, una i, una o, una n o uno spazio".
Guarda cosa succede: ti ho colorato i pezzi del pattern e le porzioni di ogni stringa che ognuno di quei pezzi matcha:
codice:
[^function ]+[\w_\-]{1,}[^\(]
codice:
function VerificaPasswordAdm($pass)
function DEBUG($array,$title="",$export=false)
function PathALL($what="",$print=false,$local=false,$RESELLERNAME="",$PACKAGENAME="")
Suggerirei questo semplice pattern:
sempre che l'input sia sempre nello stesso formato di quelle righe di esempio.