Проблема с регулярными выражениями.

Dimush

Guest
Проблема с регулярными выражениями.

Нужно для mod_rewrite составить правило, что бы все url переправлялись на обработчик.
Элементарное условие, которое должно описываться одним символом, читал доку по регулярным выражениям:
"[\.*]" – ведь должно означать, любая строка как точкой, так и без нее?
"([.])*" – или вообще если имеется хоть один символ
“([a-Z0-9/](\.[a-Z0-9])?)”
и еще гору, но все равно не получается :-(
 

Demiurg

Guest
>"[\.*]" – ведь должно означать, любая строка как точкой, так и без нее?
нет, это точка либо звездочка
>"([.])*" – или вообще если имеется хоть один символ
нет, это любое количество точек
 

bgm

 
Не совсем понятно - при чём здесь "программирование на PHP"?

Всё же:

http://httpd.apache.org/docs/misc/rewriteguide.html
http://www.egoroff.spb.ru/portfolio/apache/mod_rewrite.html
http://www.egoroff.spb.ru/portfolio/apache/rewriteguide.html
http://sitemaker.ru/technologies/webserver/mod_rewrite/
 

Dimush

Guest
помоему, вообще что-то не так делаю:
RewriteRule "[a-z]*" /index.php
точно знаю, что означает - любое количество символов от a до z, или вообще ни одного. И когда подставляю a, в качестве url, то сервер ругается :-(.

>>"([.])*" – или вообще если имеется хоть один символ
>нет, это любое количество точек
хм, ведь точка означает любой символ?
 

fixxxer

К.О.
Партнер клуба
внутри квадратных скобок - нет
почитай статью о регулярных выражениях на этом сайте (сверху, ссылка "Статьи", там найдешь).
 

sakon

П..и.н..ок
>хм, ведь точка означает любой символ?
В [] точка означает, что это точка и ничего более.
 

Dimush

Guest
Прочитал, из прочитанного делаю вывод, что мне нужно следущее:
^[-.a-zA-Z/0-9_]*$, хотя в рассматриваемом случае: - “все что угодно”, в принципе можно обойтись и “^.$” во «множественном числе», т.е. “^.{0,}$”, или даже “^[^\s]*$” или “^[\S]*$”.
Только из приведенных здесь примеров работает только, “^.$”(т.е. один любой символ, ), хотя в принципе, то должно работать все.
 

bgm

 
Автор оригинала: Dimush
Прочитал, из прочитанного делаю вывод, что мне нужно следущее:
^[-.a-zA-Z/0-9_]*$, хотя в рассматриваемом случае: - “все что угодно”, в принципе можно обойтись и “^.$”
Ты почти угадал. Только можно обойтись вот чем:
(.htaccess)::
RewriteEngine On
RewriteRule .* index.php
 

bgm

 
Где?
Написано же:
RewriteRule .* index.php

.* - это и есть искомое регулярное выражение
 

Dimush

Guest
Так ^ и $ нужно добавлять? ^.*$ и .* одинаково работают, а вот [\S]* работает только без символов начала и конца строки.
 

bgm

 
Автор оригинала: Dimush
Так ^ и $ нужно добавлять? ^.*$ и .* одинаково работают, а вот [\S]* работает только без символов начала и конца строки.
^ и $ добавлять не обязательно, так как ^.*$ и .* описывают одно множество.
 

Dimush

Guest
Вопросов больше не имею, спасибо за разъяснения.
 
Сверху