2010-08-26 7 views
0

J'ai besoin d'une regex qui corresponde à toutes les instances d'un nom de fonction PHP donné dans un code donné.Correspondance d'un nom de fonction

Le regex doit correspondre foo dans:

foo("qwe"); 
function foo($param); 
return foo(); 

Un ne correspond foo à:

my_foo("qwe"); 
foo_bar(); 
"some foo string" 
+6

Utilisez un [tokenizer] (http://php.net/manual/fr/book.tokenizer.php)! – kennytm

+1

@Bobby Jack: ressemble à PHP pour moi. 'function foo ($ param)' est assez indicatif c'est PHP, bien que 'function foo ($ param);' n'est pas une instruction PHP valide. – BoltClock

+0

@Bobby Jack: Je construis un simple outil de refactoring pour le code php. –

Répondre

1

Essayez \bfoo\([^\)]*\). Cela va correspondre à "certains foo() chaîne" mais pas "une chaîne de foo" cependant. Je ne sais pas si c'est assez bon pour toi.

0

Vous voulez ceci:

/\bfoo\b/ 

Les contrôles \ b pour limite de mot . Fondamentalement, le début ou la fin d'un mot (qui explique pourquoi il est des deux côtés).

+0

Cela correspond '' "à une chaîne de foo" '. – kennytm

+0

/^ foo $/ – Chris

+0

Oh, cet article est # 3577777. – kennytm