2010-10-28 14 views
0

j'ai les cordes: cesavec regex (trouver la page si on leur donne)

/search/keyword.html 

et

/search/keyword/1.html # the 1 represents the current page 

Maintenant, je veux écrire une expression régulière qui correspond au mot-clé, et la page , si donné.

$1 (la première correspondance) doit toujours correspondre au mot-clé (mot-clé).

$2 devrait être la page, s'il y en a une (1).

J'ai essayé, mais il ne fonctionne pas correctement:

~/search/((.*)/(\d*)|(.*)).html~ 

$1 est pas toujours le mot-clé et $2 pas la page (si on leur donne).

+1

Quelle saveur regex utilisez-vous? Chaque langue a des différences dans la syntaxe, il est donc important de savoir. – Oded

Répondre

1

Essayez

~/search/([^/.]*)(?:/(\d+))?\.html~ 

Explication:

/search/  # match /search/ literally 
([^/.]*)  # match any number of characters except . or /, capture in backref 1 
(?:   # if present... 
/(\d+)  # match a/and one or more digits, capture the latter in backref 2 
)?   # ...end of optional group 
\.html  # match .html literally 
0

En fonction de votre goût regexp:

,^/search/([^/]+)/(.*)\.[^.]+$,