|
|
|
|
|
для: f111
(20.08.2011 в 17:46)
| | примеров "нормальных" нигде нет | |
|
|
|
|
|
|
|
для: Phantom
(20.08.2011 в 16:40)
| | прочёл, но не доходит(((
ещё на одном ресурсе нашёл описание как:
*+ – захватывающие ноль или больше последовательных совпадений
++ – захватывающие одно или больше последовательных совпадений
но тоже не помогло вникнуть. | |
|
|
|
|
|
|
|
для: f111
(21.07.2011 в 13:10)
| | Вводим в гугл "Регулярные выражения", первая ссылка ведёт на википедию, нажимаем на неё, читаем всю страницу от начала и до конца. Несколько раз.
Ревнивая квантификация (Сверхжадная) | |
|
|
|
|
|
|
|
для: f111
(21.07.2011 в 11:46)
| | Не доверяю я этим сервисам:) По-моему, проще скрипт наваять на коленке. | |
|
|
|
|
|
|
|
для: f111
(21.07.2011 в 13:10)
| | мля, только на этом сайте работает http://gskinner.com/RegExr/
в скрипте
$str = "/ba
b/a
a/b
/ab
ab/
//ab
//a/b
//bba
/a//bb
///b
//
///
ab
bb
aa";
$arr=explode("\n",$str);
for($i=0,$c=sizeof($arr);$i<$c;$i++){
if (preg_match('{^ (?: /++[^b] | (?://)* [ba] )* $}x', $arr[$i]))
echo ' is correct';
else
echo ' is incorrect';
echo '=> ',$arr[$i],'<br>';
}
|
не хочет, зря ликовал( | |
|
|
|
|
|
|
|
для: SHAman
(21.07.2011 в 11:34)
| | всё никак логику не мог понять, даже после ваших объяснений, в ступоре сидел из-за первого условия [^/]+, казалось оно мне ненужным, лишним, и "так то" нашёл я вариант при котором оно не нужно
вуаля: {^ (?: /++[^b] | (?://)* [ba] )* $}x дальше как мне кажется уже сокращать некуда.
и снова без двойного квантификатоа никуда((, вот бы ещё смысл его применения понять | |
|
|
|
|
|
|
|
для: SHAman
(21.07.2011 в 11:07)
| | прошу прощение, упустил из вида ваше сообщение.
вот тут проверьте http://gskinner.com/RegExr/ на этом наборе строк
/ba
b/a
a/b
/ab
ab/
//ab
//a/b
//bba
/a//bb
///b
|
и вы увидите как ведёт себя регулярка | |
|
|
|
|
|
|
|
для: SHAman
(21.07.2011 в 11:34)
| | >Количество слешей не имеет значения в данном случае.
ну я так, ради эксперимента
>В интернете ничего не нахожу по этому поводу.
а вы думали я просто так тему создал?) | |
|
|
|
|
|
|
|
для: f111
(21.07.2011 в 11:08)
| | Количество слешей не имеет значения в данном случае. Важна только их четность. Странно, но вы правы, два плюса отрабатывают как надо, а один - нет. В интернете ничего не нахожу по этому поводу. | |
|
|
|
|
|
|
|
для: SHAman
(21.07.2011 в 10:26)
| | {^ (?: [^/]+ | (?:/)+[^b] | (?://)*b)* $}x
уже лучше, но пропускает ///b
регулярка из того поста не пропускает даже ///////////////b(15 слэшей)
если в вашей регулярке добавить ещё один "плюс" - ^ (?: [^/]+ | (?:/)++[^b] | (?://)*b)* $
то и она не пропускает нечётное кол-во слэшей, так что видимо в них всё же есть глубокий смысл | |
|
|
|
|