Как сделать последовательность исключений?

Тема в разделе "Регулярные выражения", создана пользователем danneo, 6 фев 2016.

Модераторы: xpert13
  1. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.485
    Симпатии:
    114
    В htaccess нужно сделать ЧПУ. Есть url:
    Код:
    /name_city/name_cat/sub_cat/f_age_patient_clinic-children-or-adult/f_type_ownership_clinic-municipal-or-private/
    Последними идут параметры фильтров, они начинаются с "f_". Перед ними несколько названий разделов (город, категория, подкатегория).
    Я пытался сделать так:
    Код:
    \/([^\/]+)\/([^\/]+)\/([^\/]+)\/(((f_[a-z0-9\-\_]+)\/)*)
    
    Вроде как бы и работает. Но проблема в том, что у первых параметров могут содержаться "_" и f, но не последовательно. И если вдруг будет еще подкатегория, то она воспримется, как параметр, в общем, не туда пойдет переменная. По идее, нужно в них исключить последовательность символов "f_", чтобы отделить, параметры фильтров от других переменных. Когда делаю так:
    Код:
    ([^f_/]*)
    Под это попадает и название категории и город, в котором есть "f" или "_", независимо от места нахождения, вначале или конце. Таким образом город может восприниматься, как параметр фильтра.
    Как сделать исключения, не могу сообразить, чтобы названия города или категорий могли содержать в себе "f" или "_" и не начинались с "f_"?
     
  2. lag

    lag

    Регистр.:
    13 окт 2014
    Сообщения:
    245
    Симпатии:
    321
    danneo нравится это.