За последние 24 часа нас посетили 35575 программистов и 1738 роботов. Сейчас ищут 765 программистов ...

Отрицание не одного символа а последовательности.

Тема в разделе "Регулярные выражения", создана пользователем Phantik, 18 ноя 2009.

  1. Phantik

    Phantik Активный пользователь

    С нами с:
    2 июл 2009
    Сообщения:
    163
    Симпатии:
    0
    Здравствуйте. Столкнулся с проблемой, не могу понять как сделать отрицание не единственного символа а последовательности.
    Т.е. например
    [^a] - шаблон для любого символа кроме "a"
    [^0-9] - шаблон для любого символа кроме цифр.

    а мне нужно что-то вроде ^index.php (но в таком синтаксисе, как я понял символ ^ означает привязку к началу)

    Задача стоит следующим образом для любых ссылок вида
    www.mysite.ru/abc.php?a=1
    www.mysite.ru/xxx.php
    www.mysite.ru/pic.jpg
    ....

    переделать в www.mysite.ru


    Сейчас я пока нашел такой вариант. для каждого файла прописываю

    RewriteRule некий_файл.php / [R,NC,L]


    А хотел бы сделать для всех файлов кроме index.php переходить на index.php
     
  2. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    А просто

    Код (Text):
    1. RewriteEngine On
    2. RewriteRule ^.*$ /index.php
    Не работает разве?

    Только как ты будешь картинки раздавать?
     
  3. Phantik

    Phantik Активный пользователь

    С нами с:
    2 июл 2009
    Сообщения:
    163
    Симпатии:
    0
    Адресная строка меняется на правильную(почти)
    но страница не отображается, вместо этого FireFox пишет:

    Неверное перенаправление на странице

    Firefox определил, что сервер перенаправляет запрос на этот адрес таким образом, что он никогда не завершится.
     
  4. Phantik

    Phantik Активный пользователь

    С нами с:
    2 июл 2009
    Сообщения:
    163
    Симпатии:
    0
    И вопрос про отрицание последовательности остается в силе

    Например запрет последовательности "abc" можно ли записать так [^a][^b][^c] ??
    Или как вообще правильно записывать отрицание последовательности?
     
  5. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Правильно говорит Firefox, потому что глупо отрицать все символы, а особенно их и наличие, и отсутствие.
    Как запрос словами прочитать? =)
    Отрицай хотя бы группу символов, например [^a-zA-Z0-9-+_-]
     
  6. Phantik

    Phantik Активный пользователь

    С нами с:
    2 июл 2009
    Сообщения:
    163
    Симпатии:
    0
    Ну а как все-таки выглядит регулярка для нахождения любого слова кроме заданного, например кроме того же "index.php"
     
  7. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Существует символ отрицания, он такой же как в РНР - "!".
    Ставится перед всей группой шаблона.
     
  8. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Phantik
    читай про негативный просмотр вперёд и назад
    Apple
    шо?
     
  9. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
  10. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Apple
    тьфу ты блин, это мод_реврайт фича