2009-10-28 25 views
2

Comment puis-je trouver plusieurs occurrences du même caractère? quelque chose comme:Correspondance de plusieurs occurrences du même caractère avec preg_match

$maxRepeat = 3; 

"pool" passes 

"poool" don't 

j'ai besoin que cela fonctionne pour tout caractère, donc je suppose que je vais devoir échapper à des caractères spéciaux tels. et \

quels caractères je dois échapper?

savez-vous une bonne référence à preg_match regexp en dehors de celui sur php.net?

Répondre

4

Vous utilisez quantifiers pour cette

preg_match("/p(o){1,3}ls/",$string); 

Extrait:

The following standard quantifiers are recognized: 

1. * Match 0 or more times 
2. + Match 1 or more times 
3. ? Match 1 or 0 times 
4. {n} Match exactly n times 
5. {n,} Match at least n times 
6. {n,m} Match at least n but not more than m times 

Ma ressource préférée pour l'apprentissage P ERL Reg Expressions Ular est le temps honoré camel book. Mais si vous n'en avez pas, this site est plutôt bon.

+0

Je pense qu'il veut le regex travailler pour une chaîne, pas seulement la piscine et pas seulement la lettre o répéter - comme '$ string = « aaaaany mot »;' – NickSoft

-1
/.{1,2}/   # 2 is limit, 1 to have at least one character 

tout caractère répété jusqu'à tant de fois, vous aurez à formater votre regex si votre $amxRepeate est un entier.

+0

point correspond à n'importe quel caractère, pas au même caractère qui se répète. Donc "oo" va correspondre mais "ao" va aussi correspondre – NickSoft

1

trouvé, ce que je dois est

if (preg_match ('/() \ 1 /.', $ T)) return true;

cela retourne true pour $ t = 'aa'; // n'importe quel caractère

if (preg_match ('/ (.) \ 1 \ 1 /', $ t)) return true;

cela retourne true pour $ t = 'aaa'; // tout omble chevalier

et ainsi de suite

Questions connexes