It could be that the first regex is matching before the third.  Perhaps
ordering the expressions from most specific to least would allow it to
match.  Also consider a terminating $ if there isn't supposed to be
anything after in the url.

--Bruce


On Sat, Nov 9, 2013 at 2:30 PM, Tom Pusateri <[email protected]> wrote:

> I know that libevhtp isn't officially part of libevent yet but maybe
> someone on this list will have a good solution.
>
> Say I want to match the following URIs:
> /customers/
> /customers/1/
> /customers/1/transactions/
> /customers/1/transactions/13/
>
> If I add matching expressions such as:
>
> evhtp_set_cb(htp, "/customers/", customers_cb, "customers");
> evhtp_set_regex_cb(htp, "^/customers/([0-9]+)/", customer_cb, NULL);
> evhtp_set_regex_cb(htp, "^/customers/([0-9]+)/transactions/",
> transactions_for_customer_cb, NULL);
> evhtp_set_regex_cb(htp, "^/customers/([0-9]+)/transactions/([0-9]+)/",
> transaction_for_customer_cb, NULL);
>
> I can match the first expression but not get to the second:
>
> start = '1', end = '/transactions/13/
>
> What is the best way to get to the 2nd expression '13'?
>
> I can re-parse end but then I have multiple places where the code contains
> the same expression.
>
> If you're familiar with Python regular expressions, there is m.group(1),
> m.group(2), etc to get each match.
>
> Thanks,
> Tom
>

Reply via email to